Если у вас когда либо возникала чудная ситуация, когда вы прописали ассоциации для моделей (has_one и belongs_to), accepted_nested_attributes, но хелпер fields_for не показывает форму то это пост поожет вам раз и навсегда избавится от этого «глюка». Заранее предупреждаю, что пост сугубо для rails разработчиков, и ни для кого никому, кроме как rails разработчикам интересен не будет!
Андрей @UncleAndy
User
Как я прошивку видеорегистратора F500 ковырял
3 min
31KВидеорегистратор в машине штука нужная и крайне полезная, особенно, если водитель склонен ездить по правилам. Одной из оптимальных по соотношению цена/качество является линейка F500 и их старший брат Каркам Q2. Вот тут есть большая и длинная тема обсуждения этих регистраторов.
Примерно полгода назад я стал обладателем такого устройства и очень доволен. Но захотелось его немного доработать — придать индивидуальности. Возникла эта идея в контексте регистратора как подарка. Задачей минимума была замена стартовой и финальной заставок на что-то свое. Эта задача была успешно решена, но обнаружился ещё простор для творческих поисков.
Для тех кому неинтересно читать технические подробности — на GitHub выложены исходники и бинарники (нужен .Net 4.0)
Примерно полгода назад я стал обладателем такого устройства и очень доволен. Но захотелось его немного доработать — придать индивидуальности. Возникла эта идея в контексте регистратора как подарка. Задачей минимума была замена стартовой и финальной заставок на что-то свое. Эта задача была успешно решена, но обнаружился ещё простор для творческих поисков.
Для тех кому неинтересно читать технические подробности — на GitHub выложены исходники и бинарники (нужен .Net 4.0)
+14
Алгоритм Диффи — Хеллмана
1 min
166KОдна из фундаментальных проблем криптографии – безопасное общение по прослушиваемому каналу. Сообщения нужно зашифровывать и расшифровывать, но для этого обеим сторонам нужно иметь общий ключ. Если этот ключ передавать по тому же каналу, то прослушивающая сторона тоже получит его, и смысл шифрования исчезнет.
Алгоритм Диффи — Хеллмана позволяет двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены канал связи. Полученный ключ можно использовать для обмена сообщениями с помощью симметричного шифрования.
Предлагаю ознакомиться с принципом работы алгоритма Диффи – Хеллмана в замечательном видео от Art of the Problem в моем переводе.
Алгоритм Диффи — Хеллмана позволяет двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены канал связи. Полученный ключ можно использовать для обмена сообщениями с помощью симметричного шифрования.
Предлагаю ознакомиться с принципом работы алгоритма Диффи – Хеллмана в замечательном видео от Art of the Problem в моем переводе.
+124
Как узнать, стоит ли оптимизировать MySQL запросы?
4 min
25KМне часто задают один и тот же вопрос: как можно находить запросы, которые необходимо оптимизировать. Ведь, скажем, взглянув на отчет pt-query-digest, мы легко найдем медленные запросы или запросы, которые вызывают большую нагрузку на систему — но как мы поймем, существует или нет возможность сделать выполнение этого запроса быстрее? Полный ответ на этот вопрос определенно потребует комплексного анализа, так как существует много путей оптимизации запросов. Однако, существует одна очень полезная метрика, которую вы можете применить — соотношение между количество возвращенных запросом рядов и пройденными рядами.
+22
Новые условия использования Яндекс.Денег — FAQ
4 min
28KВы слышали про новые условия использования Яндекс.Денег? Как многие уже знают, новые правила – это не прихоть Яндекс.Денег, все перемены напрямую связаны с требованиями закона «О национальной платежной системе».
Мы публикуем ответы на самые распространенные вопросы: с ними последние три недели к нам приходили наши пользователи, блогеры, журналисты и партнеры.
Мы публикуем ответы на самые распространенные вопросы: с ними последние три недели к нам приходили наши пользователи, блогеры, журналисты и партнеры.
+24
Работа vs Фриланс vs Бизнес
4 min
102K
На Хабре присутствует довольно много бизнесменов, еще больше фрилансеров и работающих по найму.
Большинство из нас (уж я-то точно!) попалось в ловушку жизненной колеи, утверждённой социумом, как стандарт: школа => институт => работа по найму. Кто-то сразу подался во фриланс или бизнес.
Но далеко не всегда выбор сделан осознанно.
В этой статье я попытаюсь объективно рассмотреть плюсы и минусы каждой организационной формы самореализации для того, чтобы такой выбор можно было сделать. Лично я после глубоко переосмысления бросил перспективную карьеру и ушёл в свой стартап.
Приступим к сравнению по набору параметров, которые я считаю наиболее важными, все оценки субъективны — на основании собственного опыта работы по найму + бизнеса, а также опыта работы знакомых по фрилансу.
+51
Flashcache: первый опыт
6 min
9KДисковая подсистема зачастую является узким местом в производительности серверов, заставляя компании вкладывать значительные средства в быстрые диски и специализированные решения. В настоящее время всё больше набирают популярность твердотельные SSD-накопители, но они всё ещё слишком дороги по сравнению с традиционными жёсткими дисками. Тем не менее, существуют технологии, разработанные для того, чтобы сочетать скорость SSD с объёмом HDD. Это технологии кэширования, когда объём дискового кэша на SSD составляет гигабайты, а не мегабайты кэша HDD или контроллера.
Одна из таких технологий — flashcache, разработанная в Facebook для использования со своими базами данных, и которая теперь распространяется с открытым исходным кодом. Я уже давно присматривался к ней. Наконец, подвернулась возможность протестировать её, когда я решил поставить в домашний компьютер SSD-накопитель в качестве системного диска.
И, прежде чем ставить SSD в домашний комп, я подключил его к серверу, который как раз оказался свободным для тестирования. Далее я опишу процесс установки flashcache на ОС CentOS 6.3 и приведу результаты некоторых тестов.
Одна из таких технологий — flashcache, разработанная в Facebook для использования со своими базами данных, и которая теперь распространяется с открытым исходным кодом. Я уже давно присматривался к ней. Наконец, подвернулась возможность протестировать её, когда я решил поставить в домашний компьютер SSD-накопитель в качестве системного диска.
И, прежде чем ставить SSD в домашний комп, я подключил его к серверу, который как раз оказался свободным для тестирования. Далее я опишу процесс установки flashcache на ОС CentOS 6.3 и приведу результаты некоторых тестов.
+22
«Histone» — новый кроссплатформенный шаблонизатор с открытым исходным кодом
7 min
12KВведение
МегаФон — динамичная технологическая компания, работа которой не ограничивается исключительно предоставлением услуг связи. Например, среди наших активов есть большое количество интернет-сайтов, на которых клиенты получают различную информацию и услуги. В рамках проекта по совершенствованию и развитию наших веб-проектов мы, в том числе, создаём продукты, которые могут быть полезны и другим разработчикам. Сегодня мы хотели бы представить первый из них — шаблонизатор Histone, который является opensource-проектом, распространяемым по лицензии Apache Software License 2.0. Но обо всём по порядку.
Что такое Histone?
Многие из вас при создании веб-приложений используют различные шаблонные движки. Ситуация, когда из данных, представленных в определенном формате, вам необходимо сгенерировать некий HTML-код при помощи шаблона, задающего правила преобразования, встречается повсеместно. Несколько лет назад шаблонизаторы активно использовались для генерации HTML-кода на сервере (Smarty, FreeMarker, Velocity), сегодня все чаще и чаще возникает необходимость производить генерацию HTML-кода непосредственно в браузере. В качестве примера таких шаблонизаторов можно привести: TrimPath templates, Mustache, Google Closure Templates и т. д.
+15
Улучшение субъективной скорости работы сайта при помощи подсказок браузеру
4 min
39KRecovery Mode
Я удивлен, что эта техника упоминалась на Хабре только один раз и вскользь — если верить поиску, конечно.
Меня не покидает ощущение, что на самом деле все про это знают, но я всё же расскажу.
Суть в том, что браузеру можно подсказать, какую страницу пользователь откроет следующей — и он начнет её загружать заранее.
Делается это несложно — нужно всего-то добавить пару мета-тегов в head:
Теперь подробнее про ограничения и нюансы.
Меня не покидает ощущение, что на самом деле все про это знают, но я всё же расскажу.
Суть в том, что браузеру можно подсказать, какую страницу пользователь откроет следующей — и он начнет её загружать заранее.
Делается это несложно — нужно всего-то добавить пару мета-тегов в head:
<link rel="prefetch" href="NEXT PAGE URI" />
<link rel="prerender" href="NEXT PAGE URI" />
Теперь подробнее про ограничения и нюансы.
+114
Ускоряем node.js: нативные модули и CUDA
11 min
24KИногда разработчики различных веб-проектов сталкиваются с необходимостью обработки больших объемов данных или использованием ресурсозатратного алгоритма. Старые инструменты уже не дают необходимой производительности, приходится арендовать/покупать дополнительные вычислительные мощности, что подталкивает к мысли переписать медленные участки кода на C++ или других быстрых языках.
В этой статье я расскажу о том, как можно попробовать ускорить работу Node.JS (который сам по себе считается довольно быстрым). Речь пойдет о нативных расширениях, написанных с помощью C++.
В этой статье я расскажу о том, как можно попробовать ускорить работу Node.JS (который сам по себе считается довольно быстрым). Речь пойдет о нативных расширениях, написанных с помощью C++.
+46
Как обойтись без капчи?
2 min
130KК сожалению, на многих сайтах без особой необходимости используют капчи. Хотя можно побороть спам и незаметными для пользователя способами. Особенно, капчу больно видеть на небольших коммерческих сайтах в форме обратной связи, поскольку, капча заметно снижает конверсию таких сайтов. Для больших сайтов, которые могут специально спамить, такие методы не применимы. Однако, в большинстве случаев, без капчи можно обойтись


+115
Lazarus как он есть
3 min
31KДовольно часто наше нежелание разбираться в вопросе и уверенность в собственной логике рождает неверные предположения. Эти предположения, высказанные как утверждения на публичной площадке, могут прочно осесть в чужих головах и сформировать ложные отрицательные представления.
Так в комментариях к недавней теме «Lazarus 1.0 увидел свет!» были высказаны некоторые неверные утверждения, а также задан ряд вопросов оставшихся без ответов. Являясь разработчиком Lazarus и FPC уже довольно продолжительное время, я могу и хочу дать ответ на большинство связанных с этими продуктами вопросов и развеять некоторые неверные предположения.
Утверждение: Размер исполняемых файлов оставляет желать лучшего. Виноват компилятор, компоновщик и др.
Так в комментариях к недавней теме «Lazarus 1.0 увидел свет!» были высказаны некоторые неверные утверждения, а также задан ряд вопросов оставшихся без ответов. Являясь разработчиком Lazarus и FPC уже довольно продолжительное время, я могу и хочу дать ответ на большинство связанных с этими продуктами вопросов и развеять некоторые неверные предположения.
Утверждение: Размер исполняемых файлов оставляет желать лучшего. Виноват компилятор, компоновщик и др.
+54
Как написать игру
4 min
89K
Такой заголовок был выбран с умыслом, намеренно, чтобы когда человек, впервые задумавшийся о том, что сейчас он сделает свою MMO за пару месяцев с друзьями, вбив эти слова в гугл, попал сюда, прочитал и осознал что такое разработка игры.
+29
Правильный стул для ежедневной работы за компьютером
5 min
870K
Однако, на чем же мы сидим перед столом?
Стул — не менее важная часть рабочего места любого человека, много времени работающего за компьютером в течение дня.
Все мы работаем с компьютером и порой не замечаем, на чем же мы сидим.
Оказывается наши санитарные правила и нормы
А какой стул правильный?
+116
Перевод: Чему я научился за 30 лет программирования
5 min
78KОригинальная статья Джона Грэхем-Камминга.
Переведено и опубликовано с разрешения автора.
Я занимаюсь программированием уже более 30 лет, начиная с машин, уже устаревших (на процессорах Z80 и 6502) до современных, используя языки BASIC, ассемблера, C, C++, Tcl, Perl, Lisp, ML, occam, arc, Ruby, Go и многие другие.
Далее следует список того, чему я научился.
Переведено и опубликовано с разрешения автора.
Я занимаюсь программированием уже более 30 лет, начиная с машин, уже устаревших (на процессорах Z80 и 6502) до современных, используя языки BASIC, ассемблера, C, C++, Tcl, Perl, Lisp, ML, occam, arc, Ruby, Go и многие другие.
Далее следует список того, чему я научился.
+99
Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет
12 min
70KМне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
+49
Intel тестирует систему охлаждения сервера на основе минерального масла
1 min
7.5K
Достаточно давно умельцы в Сети демонстрируют свои проекты охлаждения компьютеров и игровых консолей при помощи погружения системы в минеральное масло. Пример такого проекта можно видеть здесь, вроде как публиковалось нечто подобное и на Хабре, найти не смог. Теперь таким способом охлаждения заинтересовалась и корпорация Intel. Понятно, не для игровых консолей, а для серверов.
+41
Удачная модель ветвления для Git
10 min
1MTranslation
Перевод статьи Vincent Driessen: A successful Git branching model
В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.

В качестве инструмента управления версиями всего исходного кода она использует Git.
В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.

В качестве инструмента управления версиями всего исходного кода она использует Git.
+162
Space Engine — Вселенная на ладони
8 min
100KArthur C. ClarkeMy God, it's full of stars!
Кто из нас в детстве не мечтал «бороздить просторы вселенной», как капитан Пикард, прогуливаться по неизведанным планетам далёких миров, встречать рассветы двойных или тройных звёзд, погружаться в атмосферы газовых гигантов, ронять корабли в чёрные дыры? И я тоже не исключение. Конечно, частично эту мечту воплощали книги, фильмы и «Элит»-ные игры. Но вся романтика в них разрушалась банальными купи-продай и «пиу-пиу» в «жидком» космосе на скоростях самолётов времён первой мировой войны. Да и тем немногим виртуальным миркам не хватало свободы, детальности и масштабов реальной вселенной.
В начале тысячелетия я познакомился с MojoWorld и был шокирован его возможностями. Наконец-то, можно было бродить по другим планетам и фотографировать местные достопримечательности. Он стал первой ласточкой, дававшей надежду на то, что полномасштабные космические миры технически возможны. Но, к сожалению, производительности железа десятилетней давности было не достаточно для передачи всех красот в реальном времени. Да и планеты оставались всего лишь мёртвыми пейзажами.
Но вот, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала его по полу своим масштабом и невероятной детализацией.
+184
SQLite и UNICODE
10 min
61KПервая часть — вводная.
Вторая часть — быстрый старт.
Третья часть — особенности.
Несмотря на то, что эта тема затрагивалась на Хабре и раньше, некоторые ключевые вещи не прозвучали. В этой статье делается попытка «закрыть тему». Замечания по дополнению/исправлению приветствуются.
Вторая часть — быстрый старт.
Третья часть — особенности.
Несмотря на то, что эта тема затрагивалась на Хабре и раньше, некоторые ключевые вещи не прозвучали. В этой статье делается попытка «закрыть тему». Замечания по дополнению/исправлению приветствуются.
+27
Information
- Rating
- Does not participate
- Location
- Подгорица, Подгорица, Черногория
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis