Архив за 29 октября 2013

Несколько месяцев назад я сменил работу. Весь процесс от принятия решения о поиске и первого интервью в первой подвернувшейся компании до принятого предложения занял 8 месяцев. Перед началом марафона я имел за душой опыт смены работы 8-летней давности, но в России. Этот рассказ о том, как мои ожидания встретились с американской действительностью.

Прежде чем уйти в детали – краткий обзор меня. Я – разработчик с примерно 10-летним стажем, пишу для .NET платформы. Первые семь лет я базировался в Санкт-Петербурге и 3 года назад переехал в штаты.

Итак, поехали!
Читать полностью »

Много лет location.hash был способом в AJAX-приложении заставить работать кнопки «Назад» / «Вперёд» и, например, добавить определенное состояние страницы в избранное и вернуться к нему позже.

Сейчас, когда HTML5 считается нормой, пора обратить свое внимание на History API и забыть про location.hash. HTML5 History API проще для понимания и позволяет сделать URL чуточку красивее (без кракозябры # или #! если вы имеете дело с индексированием ajax приложения).
Читать полностью »

image

Попытайтесь повторить это сами

Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Мне удалось довести этот показатель до 904,000 запросов в секунду. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

Минутка банальности.

yum -y install nginx

На всякий пожарный, создадим бэкап исходного конфига.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf

А теперь можно и похимичить!
Читать полностью »

Задачки с Project Euler хороши тем, что позволяют развлечься и потренировать мозг на разных уровнях сложности для одной и той же задачи. Самый простенький подход — brute force. Первые два десятка задач на 99% решаются именно таким подходом. После отправки правильного ответа на задачу открывается ветка форума по ней. Любители из десятков стран соревнуются, кто процитирует решение поизощреннее. Более продвинутые используют встроенные возможности языков, на которых пишут решение, но суть одна и та же — перебор или явный с кучей вложенных циклов или неявный через вызов специальных функций. Особенно красиво это выглядит в языках Python или Ruby ( часто в одну-две строчки), помногословнее в Java и C++. Чем дальше, тем натужнее выглядят «силовые» решения, с использованием классов вроде BigInteger. С увеличением номера задачи грубую силу удается успешно применитьвсе реже и все сложнее. Появляется много задач на чистую математику, где нужно решить задачу на бумаге, а потом закодировать что-то совсем несложное. Иногда писать можно обойтись без написания кода вовсе, таких задач много — например, на применение комбинаторики.

Но иногда приятнее найти совсем нестандартное решение.
Читать полностью »

в 21:08, , рубрики: СКУД

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

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

Естественно, появление новинки у  Apple привело к тому, что все аналогичные компании так же выпустили аналогичные устройства,  видимо сказался дух соревнования . Среди аналогов разработки Apple  можно  выделить коммуникатор HTC Touch, который снабжен Windows Mobile 6 стартовым новым экраном, который позволяет устроиться без стила и программы запускать пальцами.Читать полностью »

Приветсвую.
Если вы являетесь обладателем серверов со смотрящим наружу iLO, то вам необходимо почитать данный топик, остальным может пригодится.
Имеется в наличии HP Proliant DL360p Gen8 с iLO 4 на борту. Версия прошивки была 1.20. iLO во внешнем мире для нас необходимость.
В один прекрасный день сервер перезагрузился сам. Начали изучать вопрос и увидели в логах iLO следующее (кратко в хронологическом порядке):

IPMI/RMCP login by Administrator — 190.185.122.29(DNS name not found).
New user: backup.
Modified user: backup.
Browser login: backup — 190.185.122.14(DNS name not found).
Remote console started by: backup — 190.185.122.14(DNS name not found).
Server reset.
Host server reset by: backup.

Был создан пользователь backup с полными привилегиями.
Читать полностью »

Инфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.

Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Читать полностью »

в 19:53, , рубрики: BIND, call, javascript

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

Недавно я увидел изящный JS сниппет в этом твите.

var bind = Function.prototype.call.bind(Function.prototype.bind); // #fp

Взглянув на него, я смог догадаться, что он делает. Он превращает x.y(z) в y(x, z). Радуясь как ребенок, я показал его своим коллегам. Они спросили меня, что же тут происходит. Я открыл рот, чтобы объяснить и… не смог сказать ни слова. Я развернулся и ушел.
Читать полностью »

В этой статье хотелось бы рассказать об одном из самых распространенных алгоритмов на графах — об обходе в глубину — на примере решения задачи о нахождении пути сквозь лабиринт. Всем, кому это интересно — добро пожаловать под кат!
Графы для самых маленьких: DFS
Читать полностью »