Pull to refresh
1
0
Антон Крюков @emreu

User

Send message

Разбор алгоритмов генерации псевдослучайных чисел

Reading time10 min
Views32K

Я работаю программистом в игровой студии IT Territory, а с недавних пор перешел на направление экспериментальных проектов, где мы проверяем на прототипах различные геймплейные гипотезы. И работая над одним из прототипов мы столкнулись с задачей генерации случайных чисел. Я хотел бы поделиться с вами полученным опытом: расскажу о псевдогенераторах случайных чисел, об альтернативе в виде хеш-функции, покажу, как её можно оптимизировать, и опишу комбинированные подходы, которые мы применяли в проекте.

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments25

Почему твоя мама всё ещё не прогает?

Reading time11 min
Views122K

Случай с бомжом

Однажды в конце декабря, когда воздух пахнет сгорающими над городом фейерверками, а улицы полны паникующих из-за цен на горошек, я решил научить программированию бомжа. Он сидел у стены в подземном переходе; мужчина средних лет с разумными глазами, не пьющий и не деградировавший, в опрятной, но очень поношенной одежде. Совершенно очевидно, что он переживал одиночество и отчаяние.

Обычно вместо денег я даю попрошайкам-мужчинам телефон отдела кадров одной курьерской компании, которая постоянно нуждается в сотрудниках. Но у него не было ног… Тогда я подумал: «Чувак, у тебя полным полно времени. Работа за компом — лучшее, что может случиться в твоей жизни. Купон со скидкой на курс по PHP — вот, что должны были положить тебе на койку туда, где раньше были ноги, когда ты очнулся после ампутации».

Я решил предложить ему изучить программирование. В его положении он должен был быть чертовски мотивирован. Но получится ли у него?

Читать далее
Total votes 304: ↑276 and ↓28+248
Comments468

DBA: когда почти закончился serial

Reading time10 min
Views8K

"Шеф, всё пропало, у нас serial на мегатаблице кончился!" - а это значит, что либо вы его неаккуратно накрутили сами, либо у вас действительно данных столько, что разрядности integer-столбца уже не хватает для вашей большой и активной таблицы в PostgreSQL-базе.

Да и столбец этот не простой, а целый PRIMARY KEY, на который еще и ряд других немаленьких таблиц по FOREIGN KEY завязан. А еще и приложение останавливать совсем не хочется, ибо клиентам 24x7 обещано...

В общем, надо как-то с минимальными блокировками увеличить размер PK-поля в большой таблице, на которое многое завязано.

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments12

Как устроена Алиса. Лекция Яндекса

Reading time8 min
Views85K
В этой лекции впервые рассматриваются технологические решения, на основе которых работает Алиса — голосовой помощник Яндекса. Руководитель группы разработки диалоговых систем Борис Янгель hr0nix рассказывает, как его команда учит Алису понимать желания пользователя, находить ответы на самые неожиданные вопросы и при этом вести себя прилично.


— Я расскажу, что внутри у Алисы. Алиса большая, в ней много компонент, поэтому я немного поверхностно пробегусь.
Total votes 86: ↑83 and ↓3+80
Comments67

Нотной грамоте учат неправильно*

Reading time11 min
Views235K

ФейспалмПреподаватели готовы разделить с вами все таинства музыкальной теории но не раньше, чем вы научитесь читать эти закорючки самостоятельно.


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


Под катом я опишу свою методику, которая на мой дилетантский взгляд работает лучше, чем то, что обычно предлагают начинающим.


* Дисклеймер

Прошу прощения, если заголовок статьи показался вам чересчур дерзким и провокационным. Таковым он, в общем-то, и является.


Я ни в коем случае не умаляю заслуг преподавателей, вкладывающих душу в своих учеников, как не умаляю и важности музыкальной теории и сольфеджио. Я всего лишь пытаюсь по иному взглянуть на самые первые шаги в изучении нотной грамоты с точки зрения музыканта-самоучки.


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Total votes 124: ↑123 and ↓1+122
Comments212

Выделенные серверы на базе процессоров Intel Xeon Skylake-SP

Reading time7 min
Views15K


12 июля компания Intel представила новую линейку серверных процессоров под кодовым названием Skylake-SP. Буквы SP в названии линейки — это сокращение от Scalable Processors («масштабируемые процессоры» в переводе на русский). Такое название не случайно: Intel реализовали много интересных нововведений и, как было отмечено в одном обзоре, «попытались угодить чуть ли не всем».
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments6

Check-list для подготовки качественной презентации

Reading time5 min
Views13K
Предлагаю к прочтению мой конспект с мастер-классов по оформлению презентаций и выступлениям с ними. Материал ориентирован на людей, продвигающих стартапы. Формат выступлений: сцена, живая публика, проекция файла презентации.

Для людей с маленьким опытом — это краткое учебное пособие. А для тех, кто уже «собаку съел» — это чек-лист для проверки готовности и качества презентации.

Использовались заметки с мероприятий:

1. «Ораторское мастерство», Робер Минегулов; 19.11.2009, Лига переводчиков-волонтеров “Nead For Speak”, центр «Сэлэт», Казань.
2. «Презентация инновационных проектов», Тэос Самфост; 26.11.2009, в рамках семинара «Движение к успеху», Инновационный Технопарк «Идея», Казань.
+ личные навыки.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments14

Установка принтеров Canon серии LBP в Ubuntu

Reading time2 min
Views59K
Здравствуйте. После выхода в свет Ubuntu 12.04 в состав ее сборки вошли пакеты драйверов для принтеров Canon серии LBP. Но, все же при установке принтера в системе, драйвер отказывается работать корректно.

Всем заинтересованным данной проблемой прошу ознакомиться с инструкцией, в ходе выполнения которой все же удалось заставить фунционировать принтер модели Canon LBP 3010.

Инструкция так же будет справедлива и для других принтеров Canon следующих моделей:

LBP-1120, LBP-1210, LBP2900, LBP3000, LBP3050/LBP3018/LBP3010, LBP3150/LBP3108/LBP3100, LBP3200, LBP3210, LBP3250, LBP3300, LBP3310, LBP3500, LBP5000, LBP5050, LBP5100, LBP5300, LBP6018/LBP6000, LBP6300dn, LBP7200C, LBP9100Cdn.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments46

Основы индексирования и возможности EXPLAIN в MySQL

Reading time19 min
Views35K


Темой доклада Василия Лукьянчикова является индексирование в MySQL и расширенные возможности EXPLAIN, т.е. нашей задачей будет ответить на вопросы: что мы можем выяснить с помощью EXPLAIN'а, на что следует обращать внимание?


Многие ограничения EXPLAIN'а связаны с оптимизатором, поэтому мы предварительно посмотрим на архитектуру, чтобы понять, откуда следуют ограничения и что, в принципе, с помощью EXPLAIN'а можно сделать.


По индексам мы пройдемся очень кратко, исключительно в плане того, какие нюансы есть в MySQL, в отличие от общей теории.


Доклад, таким образом, состоит из 3х частей:


  • Архитектура;
  • Основы индексирования;
  • EXPLAIN (примеры).

Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments4

Чихание на свету и ещё пять забавных генетических признаков

Reading time5 min
Views78K
Изначально ученые расшифровывали геном, чтобы найти причину возникновения некоторых болезней (а значит — их профилактики и лечения). Но десятки лет добросовестного изучения ДНК человека привели к тому, что в личном кабинете генетического теста «Атлас» есть забавные признаки, которые продлевают жизнь разве что тем, что вызывают смех.



Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments115

D3.js. Визуализация графов

Reading time13 min
Views57K
D3.js — это библиотека JavaScript для управления документами, в основе которых лежат данные. D3 помогает претворить данные в жизнь, используя HTML, SVG и CSS. D3 позволяет привязывать произвольные данные к DOM, и затем применять результаты манипуляций с ними к документу.

Для понимания статьи пригодится знание основ D3, и в ней мы рассмотрим реализацию алгоритмов визуализации графа на основе сил (Force-directed graph drawing algorithms), которая в D3 (version 3) имеет название Force Layout. Это класс алгоритмов визуализации графов, которые вычисляют позицию каждого узла, моделируя силу притяжения между каждой парой связанных узлов, а также отталкивающую силу между узлами.

image
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments8

Первые 10 минут на сервере

Reading time8 min
Views59K

Азбука безопасности Ubuntu


«Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.

Каждое утро я проверяю почтовые уведомления logwatch и получаю основательное удовольствие, наблюдая несколько сотен (иногда тысяч) безуспешных попыток получить доступ. (Многие довольно прозаичны — попытки авторизоваться как root с паролем 1234 снова и снова). Приведённая здесь общая методика подходит для серверов Debian/Ubuntu, которые лично мы предпочитаем всем остальным. Они обычно служат только хостами для контейнеров Docker, но принципы те же.

На больших масштабах лучше использовать полностью автоматические установки с инструментами вроде Ansible или Shipyard, но иногда вы просто поднимаете единственный сервер или подбираете задачи для Ansible — для таких ситуаций предназначена инструкция.

Примечание: Эта справка создана как базовая азбука. Её следует расширить и дополнить в соответствие с вашими потребностями.
Читать дальше →
Total votes 54: ↑40 and ↓14+26
Comments55

Интервью без сучка и задоринки: как программисту успешно пройти собеседование

Reading time14 min
Views57K
Пост подготовлен специально для корпоративного блога Wirex — компании, предлагающей удобное мобильное финансовое приложение для управления личными счетами. Изначально статья задумывалась как подготовительный материал, который автор отправляет своим кандидатам, но в итоге последний решил опубликовать его в открытом источнике, а мы, посчитав тему интересной, сделали перевод для вас, уважаемые читатели.

Тот факт, что вы являетесь хорошим программистом, играет поразительно малую роль при прохождении собеседования. Для того чтобы ваша работа была продуктивной, вам нужно уметь решать огромные, склонные разрастаться проблемы неделями и месяцами. Каждый вопрос на собеседовании, напротив, длится менее одного часа. Для того чтобы хорошо показать себя на интервью, вы должны знать, как быстро решать небольшие проблемы под давлением, при этом ясно излагая свои мысли. Это совершенно другое умение (в то же время я не говорю, что способность с легкостью решать задачи на собеседовании не имеет никакой связи с навыками программирования. Просто эта связь выражена куда слабее, чем считают многие компании, и именно другими факторами, отличными от специализированных умений, объясняется столь внушительное расхождение).
Читать дальше →
Total votes 31: ↑21 and ↓10+11
Comments20

5 практических примеров для изучения фреймворка React

Reading time10 min
Views252K
Перевод статьи «5 Practical Examples For Learning The React Framework», Martin Angelov

Вы вероятно слышали о популярном JavaScript фреймворке от Facebook – React. Он используется на многих популярных веб-сайтах, в том числе в Facebook и Instagram. В этой статье вы увидите 5 практических примеров, построенных при помощи React, которые помогут вам начать работать с этим фреймворком.
Читать дальше →
Total votes 20: ↑14 and ↓6+8
Comments46

Интересные способы использования Go каналов (перевод)

Reading time9 min
Views35K
Предлагаю вам перевод статьи Gary Willoughby «Interesting ways of using Go channels».

Статья предназначена для тех, кто уже немного разбирается в Go.

gopher

Интересные способы использования Go каналов


Я написал этот пост, чтобы задокументировать доклад про Go каналы Джона Грэм-Камминга на конференции GopherCon 2014. Доклад назывался «Краткое руководство по каналам» и он доступен для просмотра на youtube.com.

На протяжении доклада нам представляют интересные способы использования Go каналов и раскрывают возможности и преимущества конкурентного программирования. Лично мне этот доклад открыл глаза на несколько новых способов структурирования программ и новых техник для синхронизации по нескольким ядрам процессора.

Следующие примеры демонстрируют различные техники, как использовать каналы в Go. Код был специально упрощен для их понимания. Не стоит его использовать для продакшн версий. Например, пропущены все обработки ошибок.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments29

Как работает реляционная БД

Reading time51 min
Views534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3+226
Comments134

Управление бесколлекторным двигателем по сигналам обратной ЭДС – понимание процесса

Reading time13 min
Views112K
Когда я начал разрабатывать блок управления бесколлекторным двигателем (мотор-колесом), было много вопросов о том, как сопоставить реальный двигатель с абстрактной схемой из трех обмоток и магнитов, на которой, как правило, все объясняют принцип управления бесколлекторными двигателями.

Когда я реализовал управление по датчикам Холла я еще не очень понимал, что происходит в двигателе дальше абстрактных трех обмоток и двух полюсов: почему 120 градусов и почему алгоритм управления именно такой.

Все встало на место, когда я начал разбираться в идее бездатчикового управления бесколлекторным двигателем — понимание процесса, происходящего в реальной железке, помогло разработать аппаратную часть и понять алгоритм управления.

Ниже я постараюсь расписать свой путь к пониманию принципа управления бесколлекторным двигателем постоянного тока.


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments18

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Reading time9 min
Views85K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Total votes 158: ↑149 and ↓9+140
Comments15

Электродвигатели: какие они бывают

Reading time23 min
Views334K


В прошлых статьях был рассмотрен принцип работы синхронного и асинхронного электродвигателей, а также рассказано, как ими управлять. Но видов электродвигателей существует гораздо больше! И у каждого из них свои свойства, область применения и особенности.

В этой статье будет небольшой обзор по разным типам электродвигателей с фотографиями и примерами применений. Почему в пылесос ставятся одни двигатели, а в вентилятор вытяжки другие? Какие двигатели стоят в сегвее? А какие двигают поезд метро?

Каждый электродвигатель обладает некоторыми отличительными свойствами, которые обуславливают его область применения, в которой он наиболее выгоден. Синхронные, асинхронные, постоянного тока, коллекторные, бесколлекторные, вентильно-индукторные, шаговые… Почему бы, как в случае с двигателями внутреннего сгорания, не изобрести пару типов, довести их до совершенства и ставить их и только их во все применения? Давайте пройдемся по всем типам электродвигателей, а в конце обсудим, зачем же их столько и какой двигатель «самый лучший».
Читать дальше →
Total votes 101: ↑101 and ↓0+101
Comments179

Руководство по HTML/CSS/JavaScript

Reading time13 min
Views210K

Frontend Guidelines

Правила и руководства оформления, форматирования HTML, СSS и JavaScript кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

От переводчика

Приветствую всех снова, меня зовут Максим Иванов, и сегодня я подготовил перевод, который, возможно, окажется для вас полезным. Бенджамин Де Кук (Benjamin De Cock), разработчик из Бельгии, собрал некоторые указания по оформлению кода, которые позиционируют себя как лучшие практики по написанию HTML, CSS, JS. Конечно, существует множество рекомендаций, например, есть хороший гайдлайн от Google, наверное, есть еще что-то, однако, если следовать хотя бы некоторым из них, то можно надеяться, что ваш код станет лучше. В отдельных случаях следование этим гайдлайнам не полезно, а совсем наоборот. В общем и целом, все зависит от вашего опыта и виденья дела, если вы новичок, то скорее вам будет полезно оценить то, что пишут другие и в обществе считается верным, если вы гуру, то наверное вам и не нужны гайдлайны, которые написаны непонятно кем на ваш взгляд. Итак, приступим.
Читать дальше →
Total votes 38: ↑29 and ↓9+20
Comments38
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity