Search
Write a publication
Pull to refresh
0
0
Роман @Expellee

User

Send message

Добавь мультфильм в «Ну, погоди!»

Reading time1 min
Views1.5K
image
Всем кто так и не увидел мультика после 1000 очков, предоставляется второй шанс. Исходники приложения «Ну, погоди!» под iOS теперь доступны любому желающему на github.
Читать дальше →

Анализ целесообразности разработки мобильной версии сайта

Reading time4 min
Views3.9K
Мобильная версия сайта — версия сайта, на которой информация подается единым потоком в одной колонке. В результате отсуствует горизонтальная прокрутка (и необходимость в ней), и сайт занимает 100% ширины дисплея.

Анализ браузеров


Мобильные устройства все больше приближаются к персональным компьютерам по функциональным возможностям. Проанализируем статистику мобильных ОС и браузеров по рунету (по данным liveinternet):
Читать дальше →

Отличие Javascript от PHP o_0

Reading time4 min
Views5.9K
Доброго времени суток уважаемый %username%
Вот появился на хабре такой замечательный топик Отличие Javascript от PHP ;) не читал, но осуждаю Не знаю чем там всё закончилось все комментарии не смог перечитать, но хотелось бы развеять пару заблуждений и неточностей которые были допущены автором
Читать дальше →

Cвязывание данных в JavaScript-приложениях: автороутинг событий

Reading time7 min
Views3.4K
Привет Хабр! В этой статье я рассмотрю один из вариантов построения архитектуры клиент-серверного веб-приложения с точки зрения связывания данных. Этот вариант не претендует на оригинальность, но лично мне позволил значительно сократить время на разработку, а также оптимизировать время загрузки.
Читать дальше →

Игра «Terraria» и её «хорошая» система шифрования профайлов

Reading time3 min
Views14K
Как-то на днях я сидел и готовился к предстоящему экзамену. Но одногруппник же хотел, чтобы я его завалил. Зная, что я «падкий» на игры в стиле Minecraft, он скинул мне игру Terraria. Вначале интерес к ней зашкаливал, но чуть позже, из-за «убогости» на мой взгляд одиночной игры, он упал, и я решил поиграть в мультиплеер, где и была обнаружена интересная особенность: все добытые в одиночной игре вещи, были у меня в инвентаре даже на различных серверах в мультиплеере. Это и натолкнуло меня на мысль набрать в инвентарь по-больше «крутых» вещей. Как это было достигнуто — под катом.
Читать дальше →

Итераторы и генераторы на основе функций

Reading time6 min
Views5.1K
Поддержка итераторов и генераторов в качестве языковых конструкций появилась в javascript только в версии 1.7, и об использовании этих чудесных вещей в браузерах еще долго можно будет только мечтать. Однако использовать итераторы и генераторы в виде паттернов проектирования в javascript можно уже сейчас, и более того, делать это достаточно легко, а иногда даже приятно :)
Добро пожаловать под кат

Реализация HTTP server push с помощью Server-Sent Events

Reading time4 min
Views17K
На эту тему было уже много статей, но раскрыта далеко не вся правда. Для тех, кто пропустил — читайте Создание приложений реального времени с помощью Server-Sent Events .

Как же работает Server-Sent-Events?


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

Интересные вопросы о программировании

Reading time1 min
Views9.8K
На сайте programmers.stackexchange.com люди задают различного рода вопросы, связанные с программированием и не только. Вот, на мой взгляд, наиболее интересные(ответы, правда, на английском).
Читать дальше →

Iterators & Generators

Reading time12 min
Views20K
Обработка элементов коллекции/массива обычная и частая операция. В JavaScript есть несколько способов обхода коллекции начиная с простого for(;;) и for a in b

var divs = document.querySelectorAll('div');
for (var i = 0, c = divs.length; i < c; i++) {
    console.log(divs[i].innerHTML);
}

var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
    console.log(i, obj[i]);
}

У объекта Array есть методы обхода всех элементов map(), filter()
var numbers = [1, 2, 3, 4, 5];
var doubled = numbers.map(function (item) {
    return item * 2;
});
console.log(doubled);

В Firefox есть "заполнитель массива" (Array comprehensions)
var numbers = [1, 2, 3, 4];
var doubled = [i * 2 for each (i in numbers)];
console.log(doubled); // [2, 4, 6, 8]

Итераторы и Генераторы появились в JavaScript 1.7 (по версии Mozilla) они есть пока в Firefox 2+ (в статье будет упомянут способ как их можно «эмулировать» почти во всех браузерах с костылем) Итераторы и Генераторы вносят механизм, позволяющий управлять поведением for in и инкапсулировать процесс получения следующего элемента в списке объектов.

Часто для обхода и обработки элементов массива мы пишем большие конструкции, часто копипастим их части. Задача Генераторов и Итераторов усовершенствовать этот процесс, добавив синтаксический сахар.
Читать дальше →

Практические рекомендации по выбору паролей по результатам взлома antichat.ru

Reading time4 min
Views24K
Как вы уже слышали Брайан Кребс недавно проводил аудит паролей, полученных после взлома antichat.ru (сама база была получена где-то год назад и уже не актуальна!). Честно говоря, не очень понимаю чем занимались его видеокарты 18 дней, победив только 44% паролей. Мне на довольно скромном железе удалось подобрать 77% паролей за 8 часов. Исходя из таких несколько пугающих цифр, особенно для сайта тематически связанного с информационной безопасностью, у меня есть несколько рекомендаций о том какие пароли никогда не следует использовать, дабы они не были подобраны за пару минут.
Читать дальше →

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

Reading time4 min
Views5.8K
На размышления о необходимости генерации псевдослучайных паролей меня натолкнула достаточно безрадостная статистика взлома паролей, созданных при помощи МОЗГ v1.0; однако взять какой-то первый попавшийся программный генератор паролей и с помощью него поменять все пароли — выглядит безрассудством. Я не проводил детальный анализ готовых программ-генераторов, однако расскажу некоторые достаточно простые, но познавательные факты, связанные с математикой генерации псевдослучайных чисел хорошего качества, которые позволят выбрать нужную программу самостоятельно.
Читать дальше →

Объявлены победители пятого ежегодного конкурса свободных фотографий

Reading time1 min
Views826
Пятый ежегодный конкурс «Изображение года» — событие, в ходе которого среди изображений, получивших за прошедший год статус избранных, в ходе голосования среди участников всех проектов Викимедиа определяется «Изображение Года».

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

Считайте этот конкурс частью большой кампании «свободное — не значит некачественное». Конкурс показывает, что за качественные фотографии не обязательно платить, многие качественные фотографии доступны по свободным лицензиям.

Итак, победитель:

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

WordPress 3.2: что нового?

Reading time3 min
Views1.8K
Как и в случае с WordPress 3.1, мы снова здесь, чтобы держать вас в курсе нововведений WordPress 3.2. После задержки с выпуском WordPress 3.1, целью разработчиков стало увеличение скорости выпуска новых версий. Mark Jaquith руководит этим лично, чтобы быть уверенным, что каждый в команде максимально сосредоточен на скорейшем решении задач. Итак, посмотрим, что интересного будет в WordPress 3.2.

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

Dataflow-архитектуры. Часть 2

Reading time8 min
Views11K

В первой части статьи мы рассмотрели основные отличия архитектуры потока данных (dataflow) от архитектуры потока управления (controlflow), совершили экскурсию в 1970-е, когда появились первые аппаратные dataflow-машины и сравнили статическую и динамическую потоковые модели вычислений. Сегодня я продолжу вас знакомить с dataflow-архитектурами. Добро пожаловать под кат!

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

Защита идентификатора сессий в PHP

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

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

После аутентификации пользователя, веб-сервер предоставляет ему идентификатор сессии. Этот идентификатор хранится в браузере и подставляется всякий раз, когда нужна проверка подлинности. Это позволяет избежать повторяющихся процессов ввода логина/пароля. Все это происходит в фоновом режиме и не доставляет дискомфорта пользователю. Представьте, если бы вы вводили имя и пароль каждый раз, когда просматривали новую страницу!

В данной статье я постараюсь изложить все известные мне способы защиты идентификатора сессии в PHP.

Итак, поехали.
Читать дальше →

Неблокирующий TCP сервер без использования undocumented features

Reading time5 min
Views5.2K

Введение


В замечательной статье с trapexit «Building a Non-blocking TCP server using OTP principles» рассказывается, как построить неблокирующий TCP сервер используя принципы OTP. Думаю, каждый, кто начинал изучать elrlang рано или поздно сталкивался с этой статьей. Для построения неблокирующего TCP сервера в указанной выше статье используется недокументированный функционал из модуля prim_inet.

Не буду филосовствовать хорошо или плохо использовать undocumented features, в некоторых «костыльных» решениях это действительно нужно, в продакшене я бы предпочел использовать проверенные средства. На заметку, даже в самой статье автор предупреждает: "Examining prim_inet module reveals an interesting fact that the actual call to inet driver to accept a client socket is asynchronous. While this is a non-documented property, which means that the OTP team is free to change this implementation, we will exploit this functionality in the construction of our server [1]."
Читать дальше →

Исследуем производительность JOIN в MySQL

Reading time4 min
Views38K
Я думаю, ни для кого не секрет, что JOIN считается достаточно дорогой операцией, и многих начинающих программистов (которые юзают MySQL) любят запугивать, что JOIN — это плохо, и лучше всего обойтись без них, если есть возможность.

Давайте исследуем этот вопрос более подробно и посмотрим, действительно ли JOIN — это плохо, и когда вообще стоит задумываться об этом.
Читать дальше →

Онлайн проектная среда: решение. Часть 1

Reading time5 min
Views974
image

Введение


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

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity