Pull to refresh
34
0.1
ionicman @ionicman

User

Send message

Javascript и canvas в игре «Жизнь» Джона Конвея

Reading time14 min
Views20K
Напишем эту алгоритмическую игру [1] так, чтобы извлечь из неё максимальную образовательную пользу в области алгоритмов, языка Javascript, хорошего стиля программ, умения оптимизировать код. Центральным местом обсуждения будет не игра, а код, способы реализации, оптимизация.

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

Недавно проведённый на Хабре опрос [3] показал реальную картину — 20% программистов написали когда-либо её работающую реализацию, а порядка 10% о ней не слышали. Что ж, тем интереснее будет оставшимся 80% узнать, что можно извлечь из реализации игры.
Читать дальше →

Войны в песочнице — Часть 1

Reading time5 min
Views13K

Предупреждение


В статье описаны приключения одного моего знакомого.

Предыстория


События проходят во времена далекого третьего курса.

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

Что же дальше?

Мой подход к проектированию веб-сайтов

Reading time4 min
Views42K

Прелюдия


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

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

Читать дальше →

Синхронизация двух серверов Apache + MySQL на FreeBSD

Reading time4 min
Views16K
В данном обзоре я расскажу о реализации кластера состоящего из двух нод с резервированием популярной связки для веб сервера Apache + MySQL + FreeBSD (или любой Linux).
Читать дальше →

Всё, что надо знать о точке с запятой

Reading time11 min
Views49K
Автовставка точек с запятой (";") — одна из наиболее спорных особенностей яваскрипта, вокруг которой скопилось много непонимания.

Некоторые программисты ставят ";" в конце каждого оператора, некоторые — только там, где строго необходимо. Большинство же где-то посередине, хотя есть и такие, которые добавляют лишние ";" из стилистических соображений.

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

Читать дальше →

10 лет практики. Часть 1: построение программы

Reading time6 min
Views22K
Десять лет я пишу на С++. Первые пять лет моей задачей было писать эффективный код для компьютерных игр, потом основным требованием была стабильность, так как речь шла об автоматизации промышленных объектов. Я бы хотел поделиться своим личным опытом и практическими наработками, которые помогут создавать эффективные и в то же время стабильно работающие программы.
image

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

Знаешь ли ты JAVA, %username%?

Reading time11 min
Views150K
JAVA Evil EditionНедавно я сдавал экзамен Oracle Certified Professional Java Programmer (бывший Sun Certified), и за время подготовки прорешал огромное количество различных задачек. Отдельные задачки по джаве иногда появляются на хабре и вызывают немалый интерес, поэтому я решил поделиться накопленным и сделать небольшую подборку.

Итак, ниже представлен десяток наиболее, на мой взгляд, интересных задач по Java SE из более чем 1000, проработанных мной. Сложность варьируется от средней до ооооооочень сложной. Решение большинства задач практически не требует знания API, достаточно логики и фундаментальных основ Java.

К слову, сложность экзамена Oracle Certified Professional Java Programmer гораздо ниже чем сложность данного теста, поэтому все, кто правильно ответит хотя бы на половину этих вопросов, может смело сдавать этот экзамен без всякой подготовки.

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

ВНИМАНИЕ: во второй половине статьи — ответы и подробные пояснения по соответствующим нюансам JAVA.

Читать дальше →

VU метр с нуля

Reading time5 min
Views68K


Введение


Помню, как лет в десять впервые взялся за паяльник и к годам так к четырнадцати уже собрал радиуправляемую машину, но с появлением компьютера как то-забросил это благородное занятие. И вот, буквально две недели назад, меня посетила идея сделать что нибудь красивое. Подумал и решил сделать VU — meter. Начал перекапывать форумы по электронике, в поисках наилучшей, на мой взгляд, реализации данного девайса. Спустя день поисков я наткнулся статью в журнале “РадиоХобби”, поискав еще немного я нашел рисунок печатной платы. Так что, что ни логика ни печатная плата мне не принадлежит, предложил данную схему, как написано в журнале — Марцин Вьязаня.

Тут начинается самое интересное…
Осторожно трафик
Читать дальше →

Лабораторный источник постоянного напряжения из блока питания

Reading time4 min
Views436K
image

Несколько недель назад мне для некого опыта потребовался источник постоянного напряжения 7V и силой тока в 5A. Тут-же отправился на поиски нужного БП в подсобку, но такого там не нашлось. Спустя пару минут я вспомнил о том, что под руки в подсобке попадался блок питания компьютера, а ведь это идеальный вариант! Пораскинув мозгами собрал в кучу идеи и уже через 10 минут процесс начался.
Читать дальше →

Улучшение звучания колонок Sven Stream

Reading time4 min
Views103K
Доброго дня, Хабр!

В какой-то момент я решил заапгрейдить свои настольные колонки. Преемник фанерно-пластиковых серых коробочек должен быть достаточно качественным (ради этого апгрейд и затеивается), но дешевым (музыку я слушаю в основном фоном во время работы). Кроме того, они должны нормально помещаться на столе. По результатам гугления, чтения форумов и обзоров были выбраны Sven Stream. В силу требования дешевизны было очевидно что в колонках сэкономят на всем чем только можно. Из этого следовала мысль что даже небольшие и дешевые улучшения могут ощутимо улучшить звук. Ну и кроме этого было интересно поиграться в ковыряние усилителя.

Вот что из этого вышло...

Свежая подборка jQuery плагинов

Reading time2 min
Views15K
Для меня jQuery ассоциируется с мощной и главное кросс-браузерной JavaScript библиотекой. Можно долго перечислять ее достоинства, холиварить по поводу и без, но думаю, никто не будет против посмотреть подборку интересных плагинов и уроков:
для удобства – каждая картинка ведет на демо

Hover Slide Effect



Демо | Урок
Галерея состоит из нескольких картинок, при наведении на одну из них она эффектно меняется на другую, а при клике на любую картинку — меняются все одновременно.

Остальные плагины

Вариант удаленного доступа к корпоративной сети предприятия посредством VPN с разграничением доступа к внутренним ресурсам и аутентификацией в AD

Reading time3 min
Views59K
Часто (если не всегда) перед ИТ отделом рано или поздно встает задача организации удаленного доступа в сеть предприятия, например командированным сотрудниками или попросту заболевшим. Решать эту задачу можно по-разному. Я хочу рассказать об одном из решений реально используемом в нашем холдинге. Отличается это решение от многих других тремя основными вещами:

  1. На стороне удаленного пользователя требуется минимум настройки — используются все стандартные приложения и возможности ОС Windows;
  2. Удаленный пользователь работает на сервере терминалов, что обеспечивает его необходимой средой для выполнения своих должностных обязанностей
  3. Очень гибкое управление доступом к внутренним ресурсам компании (обеспечивается TMG\ISA файрволом согласно доменной аутентификации)


Если вам это интересно, добро пожаловать под кат
Читать дальше →

Тюнинг резинового текстового поля

Reading time3 min
Views28K
Думаю, что многим верстальщикам (и не только) приходилось верстать текстовые поля (<input type=«text» />), задавая им произвольные размеры. Но как сделать данный элемент резиновым и удовлетворить условиям:
  1. Возможность установки любых горизонтальных и вертикальных отступов у текста;
  2. Элемент должен занимать весь контейнер, в который он помещен;
  3. Клик мышью в любое место текстового поля устанавливает в нем курсор.

Ответ достаточно прост и решается следующим методом:


Читать дальше →

Мало выводов? Используем RESET

Reading time4 min
Views32K
Многие разработчики устройств на микроконтроллерах хотя бы однажды сталкивались с ситуацией, когда выбранный МК подходит по всем параметрам (быстродействие, объем памяти, наличие нужных функций), за исключением количества портов ввода-вывода. Особенно обидно, когда не хватает всего одной «ножки» и из-за этого приходится выбирать следующую модель чипа. Она будет занимать больше места на плате, потреблять больше энергии, наконец будет просто дороже стоить.

Чтобы сэкономить порт, разработчики прибегают к невероятным ухищрениям. Например, на одном форуме мне встретился способ управления сдвиговым регистром по одному порту (данные и тактовый импульс) через RC-цепочку. Некоторые такие способы приводят к снижению надежности работы устройства и ухудшению его повторяемости (зависят от параметров конкретного экземпляра микросхемы), поэтому прибегать к ним следует с осторожностью, проанализировав все «за» и «против».

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

Два варианта такого использования, применительно к семейству 8-битных МК AVR фирмы Atmel.

Номер телефона

Reading time1 min
Views292K
Регулярное выражение для валидации номера телефона:

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).

Читать дальше →

Текст из картинки

Reading time1 min
Views3.2K
Понадобилось для одного проекта сделать текст с цветами букв из нужной картинки. Делать все из картинок было бы неправильно, да и текст поисковиками пусть лучше обрабатывается. Нужного плагина не нашлось и было интересно написать свой.

Вкратце
Текст из картинки, jQuery плагин pictotxt

Демо 1 | Демо 2.
Читать дальше →

Google Body Browser

Reading time1 min
Views47K

Сегодня наткнулся на Google Body Browser. Имхо просто потрясающая вещь даже для тех, кто не занимается медициной.

Хотя действительно интересно наглядно посмотреть-покрутить где находится желудок, как идут нервы и т.д., но для меня, как веб-разработчика это первый действительно наглядный пример толкового использования WebGL — без установки никакого плагина в Chrome 9+ и FireFox4. Кроме того используется декомпрессия ресурсов на клиенте.

Отдельно отмечу возможности передачи прямых ссылок на определенный вид/орган, например вот так и возможности поиска органов с чем-то похожим на Google Instant (справа сверху — инпутбокс легко можно не заметить).

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

Видео с демонстрации Google Web Browser'a с WebGL Camp'а можно посмотреть тут.

Анализ проникновения бота через эксплоит в старых версиях phpmyadmin и рекомендации по настройкам безопасности php-хостинга

Reading time11 min
Views13K
Имею на администрировании несколько серверов, на которых хостятся восновном свои проекты, но кроме них ещё довольно много пришлось разместить левых сайтов — клиентов, знакомых, знакомых знакомых и т.п. За время администрирования встречались разные проблемы, поэтому настроены кое-какие мониторинги (zabbix и самописные скрипты).

И вот вчера на одном из серверов скрипт, проверяющий активные соединения, забил тревогу: постоянно висит исходящее соединение на неизвестный хост на порт 433, уже более 9 часов на момент когда я осилил прочитать почту в понедельник утром ;)

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

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

Бульбулятор травилка. Ускоритель травления печатных плат

Reading time3 min
Views31K
Помню ещё в 12 лет, когда травил свою первую печатную плату, просто изнывал от нетерпения произвести этот процесс быстрее. Тогда раствор был старым и травление шло почти сутки. Ныне я травлю, конечно, значительно быстрее, но всё же не за пару минут. А ведь так хочется узрить результат своих трудов и перейти к более интересной стадии – сверлению и запайке деталей. И вот поселилась в моей голове мысль, как же ускорить данный процесс. Собственно говоря, все кто травит печатные платы, знают, что ускорение травления обеспечивают два фактора: повышение температуры раствора и постоянное его перемешивание. Первый фактор легко достижим – залил хлорное железо кипяточком и получил профит. А для реализации второго, каких только конструкций я не встречал: и мешалки, и качалки, и педальки и т.п. бред. Но на самом деле, всё оказалось значительно проще, дешевле, а главное доступнее.

image
Бульбулятор собственной персоной

Для изготовления потребуется:
— поллитровая пластиковая бутылка любимого напитка;
— дешевый аквариумный компрессор;
— вертикальная прямоугольная ёмкость, желательно прозрачная (я использовал ёмкость от старого аккумулятора, можно использовать квадратную вазу, главное чтобы была не металлическая);
— шланг для компрессора, длинной метр (покупается в том же магазине, где и сам компрессор);
— прямоугольная пластина, для сборки (можно использовать фанеру, или железо, я же использовал толстый гетинакс).

Из инструментов нам потребуется только термоклей с термопистолетом.

Читать дальше →

Information

Rating
6,657-th
Registered
Activity