Search
Write a publication
Pull to refresh
51
0
Антон Сердюк @m00t

Software Engineer

Send message

Реализация шаблона Identity Map в Yii Framework

Reading time3 min
Views8.3K
Доброго времени суток, хабрасообщество!

Проблема


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

Например, допустим, у нас есть некоторая модель ActiveRecord — Expence и вот такой код:
$modelOne = Expence::model()->findByPk(10);
$modelTwo = Expence::model()->findByPk(10);
var_dump($modelOne === $modelTwo); // Вернет false

Таким образом, меняя одну модель мы никоим образом не затронем вторую(что логично, так как они ссылаются на разные объекты).
$modelOne->someField = "Data";
$modelOne->save();
/// ...какой-то код...
echo $modelTwo->someField; // Содержит старое значение
$modelTwo->save(); // Затираем ранее записаные данные

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

Физика инноваций

Reading time5 min
Views2K
К написанию этой статьи меня привели размышления над проектом "Новая технология для полностью экологичного получения электричества" и попытками блестящих комментаторов ilya42, anmipo и других спустить с неба на землю авторов начинания.



Из подземелья знаний и опыта инженера по двигателям летательных аппаратов мне тоже представляется невозможным добывание потоков воды из сетки, просто поднятой в небо. Законами термодинамики пренебрегать нельзя. Глядя из того же подземелья, я бы добавил к возражениям оппонентов еще несколько сложностей: удержание на заданной высоте и управление сооружением в изменяющихся воздушных потоках, согласование места расположения Аэро ГЭС с инстанциями, отвечающими за безопасность воздушного движения, приспособление устройства к изменению погодных условий, временам суток и года и много чего еще. Проект, мягко говоря, проработан не слишком тщательно.

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

Об ИИ в интеллектуальных играх

Reading time7 min
Views33K
Не так давно я увлёкся игрой в сёги. К сожалению, эта чудесная игра практически не известна в России, поэтому пока я не научил играть друзей, мне приходилось играть с программой. Конечно, мне было интересно, как эта программа работает.
Ниже представлен небольшой рассказ о компьютерных алгоритмах, используемых в интеллектуальных играх.
Читать дальше →

Делиться не всегда полезно: оптимизируем работу с кэш-памятью

Reading time7 min
Views40K
Делиться с ближним своим для нас, божьих тварей, это очень характерно, считается добродетелью, и вообще, как утверждает первоисточник, положительно отражается на карме. Однако в мире, созданном архитекторами микропроцессоров, такое поведение не всегда приводит к хорошим результатам, особенно если это касается разделения памяти между потоками.

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

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

Преимущества Common Lisp

Reading time15 min
Views35K
Лисп часто рекламируют как язык, имеющий преимущества перед остальными из-за того, что он обладает некоторыми уникальными, хорошо интегрированными и полезными фичами.

Далее следует попытка выделить набор особенностей стандартного Common Lisp, кратко и с примерами.

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

Текст по большому счёту основан на списке особенностей CL и обзоре CL Роберта Стренда (Robert Strandh).
Читать дальше →

Тренд, который изменит всё

Reading time3 min
Views3.4K
Производительность компьютеров демонстрирует впечатляющий и устойчивый рост, удваиваясь каждые полтора года. Однако мало кто знает, что и электрическая производительность (число операций на киловатт потреблённой электроэнергии) тоже удваивается каждые полтора года с самого начала компьютерной эры.

Koomey's law
Читать дальше →

Редактирование древовидных структур с SonataAdminBundle в Symfony2

Reading time9 min
Views14K
Редактирование древовидных структур — довольно частая задача в веб-разработке. Это очень удобно пользователю, поскольку дает ему возможность создавать любые иерархии у себя на сайте. Естественно, что после перехода на Symfony2, одной из первых задач стало создание такого иерархического списка страниц и написание админки к нему. А так как в качестве админки я использую SonataAdminBundle, то задача сводилась к настройке его для редактирования деревьев.
Читать дальше →

Draw Something теряет пользователей, стоимость «Зинги» падает

Reading time2 min
Views1.5K


Почти любого разработчика, игра которого получит первые места в топах приложений для мобильных устройств, наверняка попробует приобрести «Зинга». Если же сделка не состоится, то гигант мобильных приложений выпустит похожую игру сам. Компания действует по старой и известной схеме: не можешь победить — купи их, не можешь купить — клонируй их. Подобная судьба и была уготована компании «ОМГПОП» и их приложению «Нарисуй что-нибудь»: разработчик согласился продать «Зинге» своё приложение за 200 миллионов долларов, что на тот момент казалось выгодной сделкой, поскольку Draw Something имела взрывную популярность.

Действительно, уже через полтора месяца после выпуска в приложении было 35 миллионов зарегистрированных пользователей, а игра обеспечивала 1 миллиард показов рекламных баннеров в сутки. Игра легко выбилась в первые строчки «Апп Стора» и «Гугл Плэй», казалось, что появился новый «Энгри Бёрдс».

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

Самые важные решения — не технические

Reading time2 min
Views1.3K
Меня время от времени озадачивают вопросами в связи с мимолётной заметкой, которую я сделал в 2010, по поводу того, что я больше не программирую ради заработка. Это правда. Я не работал в качестве full-time программиста с 2003-го. Короткая версия этих вопросов — «Почему?». Более длинная версия — «Слушай, ты ведёшь супер-технический блог о программировании и, похоже, ты знаешь все эти штучки, но неужели ты не хочешь работать программистом?».
Читать дальше →

ФБР хочет заставить Facebook, Skype, Google и других оставлять в своих продуктах бэкдоры для слежки и прослушки

Reading time1 min
Views7.9K
Федеральное бюро расследований разрабатывает законопроект, который обяжет крупные социальные сети и компании, предоставляющие услуги VoIP и E-mail, предусматривать в своих продуктах и сервисах возможность прослушки и чтения сообщений для сотрудников ФБР.

Руководство ФБР жалуется, что с распространением соцсетей, интернет-мессенджеров и IP-телефонии преступникам всё легче избегать слежки. Новый закон дополнит аналогичный акт 1994 года, который обязывает телекоммуникационные компании поддерживать возможность прослушки по требованию ФБР. Естественно, о веб-компаниях в нём нет ни слова, что доставляет агентам кучу неудобств.
Читать дальше →

Песочница с дополненной реальностью из Калифорнийского университета

Reading time1 min
Views7K


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

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

Секретная Гильдия Долины Кремния

Reading time3 min
Views4.5K
Пару недель назад я пил пиво с друзьями в Сан-Франциско и кто-то язвительно заметил:

«У тебя слишком много хипстеров, эдак вы не отмасштабируетесь. Найми несколько жиробасов, знающих C++.»

Шутка смешная, но заставила меня задуматься. Кто эти «жиробасы, знающие C++» или, как сказал еще кто-то, «бородатые парни в растянутых свитерах, которые поддерживают сервера Google»? И почему если ты встретил одного из них, это как дернуть за нитку клубка и они вообще все, похоже, друг друга знают?

Причина в том, что…
Читать дальше →

Уязвимость PHP в режиме CGI

Reading time2 min
Views11K
Существует уязвимость на некоторых настройках основанных на CGI (на Apache + mod_php и Nginx + PHP-FPM не влияет), которая оставалась не замеченной, по крайней мере 8 лет. В 7 разделе спецификации CGI говорится:
Некоторые системы поддерживают метод для передачи [sic] массив строк в CGI скрипт. Используется только в случае «индексных» запросов. Определяется «GET» или «HEAD» HTTP-запрос со строкой поиска URL не содержащей незакодированных "=" символов.

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

Опенсорс-фотореализм на GPU: Cycles Render

Reading time8 min
Views62K
С развитием технологии GPGPU, на рынке появилось немало рендеров на GPU, среди них iRay, V-ray RT, Octane, Arion. Но, сообщество opensource не дремлет, и появились по-крайней мере два известных мне свободных рендера на GPU: SmallLuxGPU и Cycles Render. Хочу поделиться впечатлениями о последнем.

Cycles Render — unbiased рендер, с возможностью рендеринга на GPU (CUDA и OpenCL для ATI). Лежит в коробке с Blender, который работает на Windows, Linux, OSX.


Cycles Render, авто с процедурной текстурой, FullHD готовилось 2 мин на GTX580.

Блендер меня мало интересовал, даже не смотря на некоторые известные мне достоинства: открытость, легкость инсталлятора, скорость работы. Пересесть консерватору с 3д макс на Блендер крайне сложно: другое управление, «все не так!». Но, будучи повернутым на теме анбиас рендеров, тем более на GPU, решил таки опробовать Cycles, за одно и Блендер подучить (на момент опубликования статьи версия 2.63).
будет много обезьян...

Закон Евросоюза о cookies

Reading time2 min
Views32K
cookie lawЗакон Евросоюза о cookies вступил в силу в 2011 году, но ICO (Information Commissioner’s Office) решили, что справедливо будет дать владельцам сайтов один год для выполнения требований закона. Крайним сроком было назначено 26 мая 2012 года. С этой даты сайты, не соответствующие требованиям закона, могут быть оштрафованы на сумму £500 000.
Читать дальше →

История одного автора

Reading time4 min
Views2.2K
Недавно вышла в свет первая серьёзная книжка (GPU Pro-3), где я был соавтором. Тем временем в печати находится ещё одна (OpenGL Insights), в которой будут уже две мои статьи по компьютерной графике. Настало время обобщить опыт и поделиться им.

                  GPU Pro-3   OpenGL Insights

Началось всё, как и полагается, с Хабра. Была у меня в движке реализована одна сложная и интересная затея по переносу и обсчёту шерсти из Blender, а также отображению сей динамики в окошке реального времени. Думал я, куда податься с идеей, чтобы славы добыть да мир завоевать, и набрёл на Хабр.
Читать дальше →

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

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

Плотностный алгоритм кластеризации пространственных данных с присутствием шума — DBSCAN

Reading time3 min
Views17K
Доброго времени суток!
Хотел бы с вами поделиться реализацией в MATLAB плотностного алгоритма для кластеризации пространственных данных с присутствием шума — DBSCAN (Density Based Spatial Clustering of Applications with Noise).

Особенности


Алгоритм DBSCAN был предложен Мартином Эстер, Гансом-Питером Кригель и коллегами в 1996 году как решение проблемы разбиения (изначально пространственных) данных на кластеры произвольной формы. Большинство алгоритмов, производящих плоское разбиение, создают кластеры по форме близкие к сферическим, так как минимизируют расстояние документов до центра кластера. Авторы DBSCAN экспериментально показали, что их алгоритм способен распознать кластеры различной формы.
Читать дальше →

Saga: проверяем покрытие кода тестами

Reading time2 min
Views3.3K
Если вы пишете на javascript и покрываете код юнит-тестами, то, вполне вероятно, вам будет интересно насколько хорошо он покрыт. А если в проекте используется Maven, то хочется получать эту информацию при каждой сборке.

Итак, Saga — анализатор покрытия кода со вкусностями:
  • работает с большинством тест-фреймворков
  • консольная версия
  • maven-плагин версия (на официальном централе)
  • красивые и удобные отчёты



Где скачать и как использовать

Information

Rating
Does not participate
Date of birth
Registered
Activity