Архив за 11 июля 2014 - 3

Введение

В прошлом году произошло революционное событие в разработке веб-приложений: компания Facebook выпустила React — библиотеку для создания пользовательских интерфейсов в браузере, использующую радикально отличающийся подход к структурированию кода и написанию графических компонентов. Вместо того, чтобы, имея размётку, «цепляться» к ней из JavaScript, т.е. работать напрямую с DOM, вводится понятие компонента — самодостаточной единицы, которая представляет собой легковесное описание DOM. Когда «реакт» определяет, что необходимо перерисовать что-либо на странице, он рассматривает дельту изменений этого виртуального DOM и перерисовывает только изменённые части. Благодаря тому, что при таком подходе обращение к DOM происходит гораздо реже, возрастает отзывчивость интерфейса и скорость работы: работа JIT не прерывается тяжеловесными обращениями к нативному коду.

React предоставляет возможность сохранения состояния для каждого компонента, при изменении этого состояния он запускает «перерисовку». Таким образом, состояние вашего приложения может оказаться «размазанным» по дереву компонентов. Это не является недостатком React: наоборот, библиотека обеспечивает базовые необходимые блоки и не навязывает лишних правил, когда это возможно. Кто пробовал строить приложение по такой схеме, когда каждый компонент имеет своё изменяемое состояние, рано или поздно столкнулся с возрастающей неуправляемостью кода и сложностью понимания происходящего в приложении. В связи с этим начали появляться библиотеки-надстройки над React, наиболее известной из которых является Om на ClojureScript от David Nolen. Почитать подробнее про Om можно в его блоге.

Каждый React-компонент имеет возможность переопределить метод shouldComponentUpdate, чтобы помочь библиотеке узнать, необходима ли его перерисовка. По умолчанию React возвращает true, и это значит, что «перерисовке» подвергаются все компоненты. Под перерисовкой в данном контексте понимается вызов метода render каждого компонента для построения виртуального DOM, который впоследствии сравнивается с предыдущим значением, после чего перерисовываются в реальном DOM только затронутые части.

В Om был использован централизированный подход к управлению состоянием: оно хранится в ClojureScript атоме на самом верху иерархии компонентов. Дочерние же компоненты получают «указатели» на подразделы этого состояния, которое является иммутабельным значением. Это довольно очевидное решение с точки зрения функционального программирования. Таким образом это позволяет определить метод shouldComponentUpdate так, чтобы он сравнивал текущее состояние с предыдущим с помощью оператора ===, а также хранить всё состояние в одном месте, что значительно упрощает понимание работы приложения.

В компании, в которой я работаю, для проекта было принято решение создать концептуально похожую надстройку над React с нуля и на чистом JavaScript, т.к. использовать ClojureScript не было возможности и желания. Так было положено начало Morearty.js — «more» + «react» + «art» (от названия компании).Читать полностью »

В какой-то из весенних дней этого года я ехал в троллейбусе и листал комикс о Коше. В одном из выпусков была такая фраза «НО! Её можно понять, она же фракталами в горизонт перетекает, я бы тоже замешкался...». После этого я посмотрел в окно и понял, что если мы возьмём два подходящих дробно-линейных преобразования комплексной плоскости a(z) и b(z), и рассмотрим систему итерированных функций для a(z), b(z), a−1(z), b−1(z), взяв в качестве начального множества картинку с Кошем, то Кош будет перетекать фракталами в горизонт!

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

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

Кош на комплексной плоскости

Читать полностью »

Всё, дождался!

Меня взяли учиться в Computer Science Center. Чуть больше месяца я провел в напряженном состоянии ожидания, каждый день с надеждой просматривая почту. И вчера я наконец получил заветное письмо. Чертовски радостная весть и очень нужная.

Про CSC я узнал довольно давно, пару лет назад точно. Тогда еще мои мысли были тесно связаны с Академическим Университетом, и я даже попытался поступить туда в магистратуру, но мимо. Мыслей поступить в центр почему-то у меня тогда не возникло. Ну да ладно.
В этом году я созрел. Причем довольно рано (как мне казалось): набор должны были открыть в апреле, а я начал обдумывать это дело где-то в феврале. Посмотрев по диагонали примеры вступительных заданий и посчитав, что месяца мне вполне хватит на подготовку — забыл про это всё и сконцентировался на подаче заявки на участие в GSoC 2014. Туда не попал и тут же вспомнил про CSC. Вспомнил, как оказалось, несколько позновато.
Читать полностью »

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

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

Для остальных, добро пожаловать под хабркат!
Читать полностью »

В данной статье предлагаю рассмотреть создание достаточно быстро (~30 секнуд) устройства вводящего человека в состояние транса или гипнотического состояния.

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

Началось все с попыток научным образом описать и объяснить феномен осознанных сновидений или другими словами ОСов. Для чего мне пришлось сделать массу экспериментов над собой и окружающими. Как правило эти эксперименты были безболезненными хотя случались исключения. В конечном мне довелось познакомиться с ребятами которые которые занимались этим исследованием более основательно. В частности у ребят оказался электроэнцефалограф (далее ЭЭГ), при помощи которого была снята ЭЭГ работы мозга человека во время осознанного сновидения.
Читать полностью »

В связи с появлением статьи «Путешествия банковской транзакции», в рамках которой стали появляться вопросы по механизму проверке PIN, хотелось бы несколько уточнить данный вопрос. В данной статье будет рассмотрен только вопрос проверки т.н. online PIN, т.е. PIN, который вводится на терминале и передается для дальнейшей проверки в систему, которая выполняет авторизацию транзакции.

Прежде чем приступать непосредственно к вопросу прокерки PIN'а карты, остановимся на некоторых теоретических вопросах.
Читать полностью »

Компания Sharp является одним из основных производителей дисплеев для смартфонов и планшетов. Следуя за высоким спросом, компания решила инвестировать в производство панелей малого и среднего размера 340 млн долларов в течение текущего финансового года, который завершится для Sharp 31 марта 2015 года.

Читать полностью »

Всем привет! В этой статье я расскажу вам о том, как можно использовать наши продукты для подготовки окружения для тестирования ваших программ. В большинстве сценариев тестирования ПО для достижения повторяемости результатов необходимо, чтобы окружение, на котором оно проводится, было идентичным. Подготовку этого окружения перед тестом будем называть деплойментом (“deployment”).
Использование продуктов Acronis в автоматизации тестирования
Читать полностью »

Однажды автор этого поста работал над одним заказом по разработке простенько сайта и тогда появилась идея — придать всем страницам некой уникальности и запоминаемости — использовать уникальные фоновые текстуры или элементы дизайна (активно использовался parallax-scrolling). Так как в тот момент дедлайн был довольно близок, а идея — в зачаточном состоянии, было реализовано намного проще — простыми заготовками, но идея выброшена не была.

Спустя некоторое время случайно наткнулся на мертвую ссылку, которая вела на несуществующий Tumblr-блог, и страница ошибки сразу привлекла внимание. Обновив страничку фоновое изображение (в виде gif-анимации) сменилось — внимание ещё более усилилось. Почитав исходники стало понятно что все изображения «прописаны» статично, но это натолкнуло на другую идею, о которой вы узнаете под катом.

Псевдо случайное изображение (на примере страницы 404 й ошибки)

Читать полностью »

На сайте Uber опубликовано несколько сотен вакансий - от ассистентов менеджера по сервисам питания (assistant food services manager) до руководителя департамента по развитию бизнеса в странах Европы, Ближнего Востока и Африки.

Среди прочих вакансий можно выделить раздел "Экспансия" (Expansion). Uber ищет "колонизаторов" Азии, Китая, Японии и стран EMEA - Европы, Ближнего Востока и Африки. Вообще, во всех этих регионах Uber уже работает, но, похоже, хочет делать это еще активней.

Uber ведет глобальную экспансию   нанимает более 400 человек по всему миру

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js