Как стать автором
Обновить
27
0

sysadmin, hobby gamdev

Отправить сообщение

Несколько JavaScript хаков для хипстеров

Время на прочтение3 мин
Количество просмотров55K
image
JavaScript занимательный язык программирования.

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

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

Я подобрал для вас несколько интересных сниппетов, которые радуют меня самого, и которые я сам использую вместо скучного кода, занимающего много места. Некоторые из них делают код короче, другие четче и яснее. Еще парочка — это хаки для отладки.

Все это я узнал, изучая проекты с исходным кодом, но здесь я пишу так, как будто бы это я их придумал.
Читать дальше →
Всего голосов 217: ↑131 и ↓86+45
Комментарии128

Создание конструктора кирпичной кладки для сайта

Время на прочтение5 мин
Количество просмотров23K
Компания Сиджеко занимается поддержкой сайта организации Реконстрой, которая продаёт и доставляет кирпич, черепицу, архитектурный декор и многие другие строительные материалы в Центральном Черноземье.

В процессе работы над сайтом возникла идея конструктора кладки.

У немецкого концерна «Feldhaus Klinker» существуют модельные ряды кирпича «Vascu Mix» и «Sintra Mix», которые специально предназначены для смешивания в разных пропорциях и создания неповторимого рисунка кладки. К ним существует ряд замазок «Quick Mix», применяемых при замазывании швов кладки между кирпичами. Для демонстрации этого подхода мы решили сделать конструктор кирпичной кладки, аналогов которому в рунете я пока не видел (буду рад примерам).

Конструктор кирпичной кладки

Подробности создания
Всего голосов 45: ↑30 и ↓15+15
Комментарии25

Симуляция океана на WebGL

Время на прочтение1 мин
Количество просмотров51K
image

Небольшое красивое демо, выложенное Дэвидом Ли — посмотреть (обсуждение).



Большая часть «магии» сделана при помощи шейдеров GLSL на GPU, код на JavaScript с матрицами — необходимая заготовка для работы с 3D графикой. Алгоритм движения волн основан на методе, описанном Джерри Тессендорфом в статье «Симуляция волн океана», опубликованной на SIGGRAPH 2002 (по ссылке есть исходный код, который написан на С++); по теме можно почитать вот это.
Читать дальше →
Всего голосов 111: ↑105 и ↓6+99
Комментарии54

UrtheCast стартует!

Время на прочтение1 мин
Количество просмотров7.5K
Совсем немного времени осталось до старта ракеты-носителя «Союз» с транспортным кораблем «Прогресс» M-21M. Среди грузов — оборудование проекта UrtheCast.
Вкратце напомню суть мероприятия. На МКС должны быть развернуты две камеры: одна среднего, одна высокого разрешения. Управляться они будут пользователями с земли. Видеопоток транслируется обратно по спутниковому каналу.

Если ничто не «пойдет не так», то вскоре можно будет заглянуть в отдаленные уголки планеты не выходя из дома.

Понаблюдать за запуском в реальном времени можно здесь.
Всего голосов 27: ↑27 и ↓0+27
Комментарии13

Мой опыт работы с Webrtc

Время на прочтение2 мин
Количество просмотров15K
Привет, хабралюди

В этом топике я хочу рассказать вам о моем опыте работы с SIP телефонией через webrtc. Рассказать о том, с какими проблемами встречался, какой софт я пробовал, какие костыли писал :).

Что было использовано:


  • Asterisk 11.5.1
  • GSM шлюз
  • SipML5

Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии7

Изоморфный JavaScript — будущее веб-приложений

Время на прочтение9 мин
Количество просмотров80K
В компании Airbnb мы многому научились за последние несколько лет, создавая мощные веб-приложния. Мы погрузились в мир одностраничных приложений в 2011 г., делая мобильную версию нашего сайта, с тех пор, кроме прочего, мы запустили Wish Lists и новый поиск. Все это — большие JavaScript приложения, что означает то, что тонны кода запускаются в браузере, чтобы обеспечить современный интерактивный пользовательский опыт.

Это обычный подход сегодня, когда такие библиотеки, как backbone.js, ember.js и angular.js помогают разработчикам создавать мощные JavaScript приложения. Мы поняли, однако, что такие приложения имеют несколько критических ограничений. Чтобы стало понятно, давайте предпримем небольшой тур по истории веб-приложений.

Картинка из статьи для привлечения внимания

Читать дальше →
Всего голосов 52: ↑42 и ↓10+32
Комментарии75

Сортировка вставкой в хэш-таблицу

Время на прочтение5 мин
Количество просмотров15K
Предлагаю вашему вниманию новый (как я думаю) алгоритм сортировки. Пытался искать похожее, но аналогов не увидел. Дайте знать, если видели что-то подобное.
Суть сортировки в том, что хэш-функция и разрешение коллизий построены таким образом, что в хэш-таблице данные оказываются уже в отсортированном виде. Остаётся только пробежаться по массиву хэш-таблицы и собрать непустые отсортированные данные.

Кому интересно – прошу под кат.

Читать дальше →
Всего голосов 20: ↑11 и ↓9+2
Комментарии19

Qt: шаблон для корректной работы с потоками — более качественная реализация

Время на прочтение7 мин
Количество просмотров33K
В своей предыдущей статье я затронул тему грамотной реализации потоков в Qt и предложил свой вариант. В комментариях мне подсказали более верное направление. Попробовал сделать — получилось и вправду легко и красиво! Я хотел было исправить старую статью, но Хабр повис — и все потерялось. В итоге я решил написать новую версию.
Смотрим новую версию!
Всего голосов 15: ↑13 и ↓2+11
Комментарии23

Язык Вольфрам и пакет Mathematica доступны бесплатно для Raspberry Pi

Время на прочтение2 мин
Количество просмотров29K
Прошло всего три дня с анонса масштабного проекта от Стивена Вольфрама, о котором уже писали на хабре, как стало известно о том, что новый язык Wolfram (Wolfram Language) можно опробовать на практике: он доступен для платформы Raspberry Pi вместе с математическим пакетом Mathematica уже сегодня — причем совершенно бесплатно. Подписавшиеся на получение новостей о языке Wolfram получили рассылку с новостью об этом. Ниже приведен её перевод (статья написана от имени разработчиков Raspberry Pi).


Рисование трехмерных графиков в пакете Mathematica на Raspberry Pi

Читать дальше →
Всего голосов 57: ↑57 и ↓0+57
Комментарии37

Личностная криптография: рассказ об одной полезной уязвимости

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

Открытый ключ, в силу математических свойств асимметричных криптоалгоритмов является набором случайных бит, не содержащих никакой информации о владельце, поэтому он не может служить средством аутентификации. Этот недостаток стал причиной появления иерархической системы сертификации открытых ключей.
Рассмотрим каким образом происходит аутентификация пользователей в настоящее время:
  1. Алиса проходит процедуру проверки в удостоверяющем центре(УЦ) и получает сертификат
  2. Алиса посылает свой сертификат Бобу
  3. Боб получает сертификат УЦ
  4. С помощью полученных сертификатов Боб производит аутентификацию Алисы

Первым об упрощении этой схемы задумался Ади Шамир в 1984 году. Он предположил, что если бы появилась возможность использовать в качестве открытого ключа имя или почтовый адрес Алисы, то это лишило бы сложную процедуру аутентификации всякого смысла.
Долгое время идея Шамира оставалась всего лишь красивой криптографической головоломкой, но в 2000 году, благодаря одной известной уязвимости в эллиптической криптографии, идею удалось воплотить в жизнь.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии24

Пара старых задачек по-массачусетски

Время на прочтение5 мин
Количество просмотров20K
Для некоторых мне известны возможные решения. Некоторые изредка встречаются на собеседованиях, реже чем об обедающих философах. Интересно было ознакомиться, как развлекаются в МассТехе.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии87

Пианино в 24 строки на Javascript: если играть, то музыку

Время на прочтение6 мин
Количество просмотров55K
Пока производители телефонов меряются, у кого тоньше, программисты продолжают меряться, у кого короче.

Я тоже решил принять участие в этой специальной спонтанной олимпиаде кодерского мастерства, и вспомнил фразу одной моей подруги-музыканта: «Если уж играть, то на пианино». И решил: да будет так. Вместо игры напишу пианино. И написал.

Оговорюсь сразу: я ни разу не музыкант, моё музыкальное образование ограничивается десятком блатных песенок на расстроенной гитаре, так что, с терминологией могу и обязательно буду безбожно врать, но буду чертовски рад, если вы меня будете в этом поправлять.

Итак, начнем.

Клавиатура классического фортепиано состоит из 88 клавиш, покрывающих диапазон от A0 (Ля суб-контр-октавы, частота звучания 27.5 Гц) до C8 (До пятой октавы, частота 4186 Гц). Каждая октава на клавиатуре состоит из двенадцати нот:
До, До-диез, Ре, Ре-диез, Ми, Фа, Фа-диез, Соль, Соль-диез, Ля, Ля-диез/Си-бемоль, Си. Жирным выделены клавиши верхнего ряда, они на клавиатуре обычно бывают черного цвета.

Собственно, вот так выглядит одна октава:

image

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

Nx = N1 × 2x-1, где:
  • N – название ноты;
  • x — номер октавы (от 0 до 8);
  • Nx, соответственно, частота звука, соответствующая ноте N октавы x;

В формуле фигурирует N1 вместо N0 лишь потому, что часть нот суб-контр-октавы (N0) имеет частоту звучания ниже порога слышимости человеческим ухом (< 20 Hz).

Чтобы ноты получались чистыми, нам нужны достаточно точные значения частот нот контроктавы, от которой мы начинаем считать. Собственно, вот они:
Читать дальше →
Всего голосов 119: ↑96 и ↓23+73
Комментарии54

Qt: шаблон для корректной работы с потоками

Время на прочтение13 мин
Количество просмотров55K
Всем хабрапривет!
Как-то понадобилось мне в Qt 5.1.1 для WinXP в VS2009 реализовать многопоточное приложение с интенсивным обменом сигналами. Взял я Шлее, вычитал у него, что нужно унаследовать класс от QThread и — вуаля, велком в многопоточность! На всякий случай заглянул в документацию Qt — там никто не возражал против наследования от QThread своего класса. Ну что же — порядок, сделано! Запускаю — вроде как работает, но как-то не так… Начинаю в режиме отладки отслеживать — а там творится черт знает что! То сигналы не выходят, то выходят, но как-то криво и из другого потока. Одним словом, полный бардак! Пришлось основательно по-google-ить и разобраться в теме (мне помогли статьи тут, здесь и там). В итоге я сделал шаблон класса на С++ (вернее, целую иерархию оных), что мне позволило в итоге писать (относительно) небольшой код класса, живущего в другом потоке, который работает правильно и стабильно.
Upd: в комментариях мне подсказали более качественный подход — я его описал в новой статье.
Под катом - подробности!
Всего голосов 20: ↑16 и ↓4+12
Комментарии17

Рисуем карту одним select'ом или о пользе многотабличных индексов

Время на прочтение11 мин
Количество просмотров7.1K
image
Данная статья написана в продолжение серии, повествующей о прототипировании простого и производительного динамического web map сервера. Ранее рассказывалось о том, как в нем устроены пространственные индексы, а так же о том, как можно просто так вот взять и нарисовать пространственный слой. Сейчас мы сделаем это чуть изящнее.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии0

Прикручиваем пространственный индекс к ничего не подозревающей OpenSource СУБД

Время на прочтение9 мин
Количество просмотров17K
image
Мне всегда нравилось, когда заголовок однозначно говорит о том, что будет дальше, например, «Техасская резня бензопилой». Поэтому под катом мы действительно будем добавлять пространственный поиск к СУБД, в которой его изначально не было.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии15

JavaScript Strict Mode

Время на прочтение4 мин
Количество просмотров74K
В пятой редакции ECMAScript был представлен строгий режим (далее в статье Strict Mode). Strict Mode накладывает слой ограничений на JavaScript, он отгораживает вас от опасных частей языка (те части, которые есть исторически, но лучше чтобы их не было) и позволяет снизить вероятность ошибки.

Пока читал эту статью я написал 38 тестов, покрывающих все правила Strict Mode, объявленные в спецификации ES5. Вы можете посмотреть насколько ваш браузер поддерживает эти справила вот тут.



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

Firefox 4 уже полностью поддерживает Strict Mode, а Chrome 11 практически полностью. Strict Mode уже не за горами — давайте изучим его подробнее!
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии42

Редактирование шейдеров WebGL на лету с помощью Firefox Developer Tools

Время на прочтение3 мин
Количество просмотров11K
В Firefox 27 появился новый инструмент — редактор шейдеров — который значительно упрощает их разработку. Редактор показывает все запущенные в контексте WebGL программы, даёт возможность редактировать их и сразу же видеть изменения без единого обрыва анимаций или потери состояния.


Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии4

Автоматический вторичный DNS давно уже не проблема

Время на прочтение3 мин
Количество просмотров28K
Посмотрев недавно статью, был сильно удивлен, что кто-то еще задается вопросом автоматического прописывания ДНС доменов на вторичном сервере. Хочу поделится своим вариантом «Automate slave DNS support», которым пользуюсь уже много лет. Возможно он подойдет не всем, но он довольно прост.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

jor1k: Linux в браузере с поддержкой сети

Время на прочтение1 мин
Количество просмотров12K
То, что мы давно ждали, появилось.
Встречайте: jor1k: OpenRISC OR1K Javascript Emulator Running Linux With Network Support
  • У каждой виртуалки есть общая сеть с доступом в интернет
  • У каждой виртуалки есть telnetd с root без пароля
  • У каждой виртуалки есть nmap ;)
  • Виртуалка получает IP по DHCP
  • Есть поддержка framebuffer
Сеть реализована на websockets со стороны сервера и эмулируемом OpenCores ethmac со стороны VM.

У меня на ноутбуке выдает 120 MIPS с ядром asm.js.
Более подробная информация в блоге автора.
Have fun!
Всего голосов 38: ↑37 и ↓1+36
Комментарии15

Китай и китайцы. Взгляд со стороны. Часть 1

Время на прочтение10 мин
Количество просмотров66K


Прошло уже 5 месяцев с тех пор, как компания PHILIPS выбрала наш облачный сервис IVIDEON в качестве своего партнера. Мы были признаны действительно лучшими обойдя десяток претендентов на эту роль из разных уголков планеты.

Двенадцать перелетов в Гонконг и в Китай, чтобы на свет появилась камера PHILIPS — IVIDEON для её продажи во всех магазинах Apple по всему Миру.

Это действительно интересная история, которая показывает, что все-таки разработчики могут создать по-настоящему классный продукт. Более того без всяких “продавцов” заключать контракты мирового уровня.
Обещаю рассказать об этом немного позже, а сейчас я бы хотел поделиться с вами тем, каким предстал передо мной Китай. Без розовых очков и красок, как его видят многие туристы. Со здоровым скептицизмом, иногда с восхищением, а местами даже с отвращением. Этот пост, а точнее серия постов, будет полезна не только тем, кому просто интересно почитать о Китае, но и для тех, кто по тем или иным причинам задумывается о производстве или закупках продукции в этой стране. Так как не зная о том с кем придется иметь дело и особенности ведения бизнеса c китайцами можно легко быть обманутым и потерять не только деньги, но и время.

Перед тем как продолжить хотел бы сделать ремарку. Все повествование в статье основывается на собственном опыте посещения Гонконга, Шеньчженя, Гуанчжоу и Ханчжоу. Естественно, что Китай это огромная страна, где люди в зависимости от района будут отличаться не только по уровню культуры, но и внешне.
Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Дата рождения
Зарегистрирован
Активность