BLANCO
-> П
« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...25 26 »
.ngs
Я уже несколько раз упоминал, что для работы мне очень нужен "генетический атлас" - такая графическая оболочка, которая изображала бы генетические данные, которые мы (и другие ученые) получаем в ходе экспериментов, на географической карте. И, кроме этого, позволяла упрощать проведение разного рода биоинформатических анализов. Мы даже вели некоторую работу в этом направлении с Лёшей, но далеко, к сожалению, не ушли.
 
Сегодня я просто хочу показать пример генетических данных с секвенаторов "следующего поколения" (Next Generation Sequencing). Это такие приборы, которые позволяют прочитать генетический код (установить последовательность нуклеотидов в исследуемой ДНК). Если интересно, читайте под O-- (там и короткое видео есть).
Автор: stasundr | O-- | .мыслей 4 [ +2 ]
.codeschool
Закончил все 3 части JavaScript Road Trip на Code School. Я пребываю в полном восторге! Тем, кто с js раньше не был знаком тоже рекомендую Smile И уже начал следующий курс - JavaScript Best Practices (следующий по плану будет Try jQuery).
 
Автор: stasundr | O-- | .мыслей 3 [ 0 ]
.music_yandex
Я люблю слушать разную музыку. И хочу что-нибудь новенького часто. Но на поиск подходящих музыкантов или жанров уходит много времени. А вот что делают ребята из яндекс.музыки (music.yandex.ru): они собирают мой рейтинг жанров, музыкантов на основе прослушанных песен. Сравнивают мой рейтинг с рейтингом других пользователей. И делают мне подборочку песен, которые ищут вместе с исполнителями, которых я слушаю. Очень интересный подход.
Еще вот такой кейс: дают подборку песен, которые в плейлистах у поклонников группы, музыку которой я часто слушаю.
А еще, делают мне ежедневную подборку музыки на основе уже прослушанной.

Они сделали разбивку музыки по жанрам. При чем не как в vk сплошным плейлистом. На страничке каждого жанра есть популярные треки, исполнители и альбомы, новинки. Рейтинг, я так понимаю, строится на основании количества прослушиваний.

Делают замечательные подборки по новой музыке, музыкантам, эпохам, собирают музыку из фильмов в одном месте и много еще других плейлистов.

Я в восторге от "функциональщины". Еще есть скробблинг музыки в LastFM.
У них есть приложения для iOS и Android. Где вся та же музыка из моего аккаунта. За подписку, дают функцию скачивания музыки на телефон. Что получается много дешевле, чем покупать в том же iTunes. И еще сервис очень удобный. Советую.
Автор: Йакуд | O-- | .мыслей 4 [ +1 ]
.to_infinity_and_beyond
Мне кажется, что я тупею. Не в плане потери когнитивных способностей, а в плане прекращения интеллектуального развития, потому что все нынешние дела будь то работа по молекулярной генетике, пайка или какое-то программирование - все это больше похоже на игру в лего. Я просто "собираю" что-то отличное от того, что собирал раньше, но нет принципиально новых вещей. А когда у меня нет какой-то "детальки", то я становлюсь беспомощным и зависимым (привет, атлас). Поэтому этот месяц астрологи объявили месяцем интернет-обучения. Количество интернет-обучение увеличено в >9000 раз.
 
Планы следующие:
1. Git - сейчас - В кое-то веки нормально овладеть гитом. Уже начал (.codeschool)
2. JavaScript - сейчас - чтобы написать генетический атлас (.codeschool)
3. Электроника - конец января 2015 - вводный курс в нормальную электронику; по ходу курса очень много используют msp430, что очень радует (.edx)
4. NGS (next generation sequencing) - сейчас - профессиональное; на работе меняем основной способ получения данных (.coursera)
5. R - сейчас - для статистической обработки большого количества новых данных (п. 4) (.coursera)
6. iOS - это уже "факультатив". Просто проверить себя на прочность (.iTunesU)
 

 

 

 
Автор: stasundr | O-- | .мыслей 7 [ 0 ]
.optimization_graphs
Немного графиков.
Красная стрелочка показывает на тот момент, когда стал проксировать запрос на другой сервер, таким образом уменьшая нагрузку на этот.
 
Автор: Йакуд | O-- | .мыслей 0 [ +1 ]
.optimization_first_results
Итак, имеем первые первые результаты оптимизации.
Перенесли пару сервисов на новый сервис, запроксировал запрос с одного сервиса на другой с помощью nginx'а.
Проксируем запрос таким образом:
 
.........
location = /file.php {
    if ($arg_cmd = "get_config") {
        proxy_pass http://another-server-ip;
    }
    
    if ($arg_cmd = "get_config_new") {
        proxy_pass http://another-server-ip;
    }
    
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
.........

 
Все запросы, которые приходят на file.php и имеют GET/POST параметр cmd равным "get_config" или "get_config_new" проксируются на сервер с адресом "another-server-ip". Нужно было бы посмотреть в сторону map в nginx, т.к. if'ы это зло. Но немного похже исправим.
Таким образом, снизили средний Load average с 10-20 пунктов (до 30 в больших пиках) до 3-8 пунктов. Снизили потребление памяти. Теперь занятая память растет не так быстро. Снизили I/O на дисках ~ на 10-15%.
 
Work in progress...
 
p.s. мониторьте свои сервера, это важно!
Автор: Йакуд | O-- | .мыслей 0 [ +1 ]
.different_code_base
Вот и еще одна "подляночка".
На боевой сервак код деплоится ручками Cry Таким образом мы имеем разные версии кода в git репе и на сервере. Никогда так не делайте, слышите, НИКОГДА!
Автор: Йакуд | O-- | .мыслей 2 [ 0 ]
.server_info
Возникла еще одна проблемка. Сервер (буду называть его stat1) не только собирает и аггрегирует статистику. На нем крутится еще сервисы ответа платежным системам, раздача конфигов клиентам, раздача баннеров.
 
Взяли еще один сервер (буду называть его services1) и переношу туда все эти сервисы и таблички этих сервисов. По характеристикам сервер очень похож на stat1, но памяти 32гб.
 
Нужно еще думать, что делать с большой табличкой юзеров (~17кк+ записей). Либо настраивать master-slave репликацию (что не есть хорошо с таким объемом), либо читать со stat1.
 
Еще большой проблемой является то, что придется переписать много кода (который очень низкого качества), для того, что бы сервисы читали данные со своего сервера.
Work in progress...
Автор: Йакуд | O-- | .мыслей 6 [ 0 ]
.optimization_statistics_db
Подсчитал текущие объемы данных в MySQL (без архивных):
 
Общее кол-во записей: 2 190 896 420
Объем базы данных: 1 336,03gb == 1,30tb
 
Рейтинг толстых табличек:
1. 977 814 710 записей, 1 139,51gb == 1,11tb
2. 56 861 604 записей, 69,28gb == 0,07tb
3. 758 204 289 записей, 36,26gb == 0,035tb
4. 16 940 330 записей, 28,46gb == 0,027tb
5. 297 518 383 записей, 22,42gb == 0,021tb
6. 16 296 499 записей, 15,15gb == 0,014tb
7. 27 436 981 записей, 10,31gb == 0,010tb
 
Совсем не удивительно, что все это тормозит. Напомню, сейчас все данные находится на одном физическом сервере.
Автор: Йакуд | O-- | .мыслей 2 [ +1 ]
.optimization_challenge_accepted
Устроился на новую работу.
Первым делом стал смотреть, с чем придется работать. Имеем сервис статистики, который собирает и аггрегирует статистику с веба/игр, считает MAU/DAU со срезами, строит графики. Архитектура текущей системы очень неудачная. Про код говорить вообще нет желания. Он очень низкого качества, совершенно не поддерживаемый, трудно изменяемый, без каких-либо структур данных. Типичная ситуация - файлик на 2-3к строк кода, в котором перемешан php, верстка, стили, js (который еще и генерируется на лету, с помощью php).
 

-- внутри поста характеристики и подробности --
Автор: Йакуд | O-- | .мыслей 9 [ +1 ]