Pull to refresh
0
0
Nemoden @So1

User

Send message

Золотое правило производительности

Reading time3 min
Views5.4K
От переводчика: Это перевод заметки товарища по имени Steve Souders, который очень плотно занимается вопросами производительности веб-сайтов и даже написал пару неплохих книг на эту тему.

Вчера я проводил семинар в Google Ventures для некоторых из инвестируемых ими компаний. Я не знал насколько подготовленной в вопросах производительности будет аудитория, так что я сделал обзор вопросов, связанных с производительностью, начиная с первых моих выступлений в 2007 году. Уже несколько лет я не рассказывал о методах улучшения производительности, описаных в моем блоге "High Performance Web Sites". Я прошелся по таким вещам, как Меньше HTTP-запросов, Добавление заголовка Expires и Gzip.

Но мне надо было вернуться еще дальше. Думая о тех временах, когда еще не существовало конференции Velocity и самого понятия WPO, я решил, что должен пояснить почему я занялся именно клиентской оптимизацией. Я нашел слайды, поясняющие «Золотое правило производительности»: 80-90% времени ожидания пользователем занимает работа браузера.

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

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

Я переучиваю людей на Java-программистов

Reading time8 min
Views135K

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

В результате я переучиваю своих друзей и знакомых на программистов. Весь процесс занимает от двух до трех месяцев. 25 уроков по 4 часа. Потом все смогли устроиться программистами.
Эта статья не о том, как надо учить, скорее просто описание процесса, который работает.
Читать дальше →

N-е число Фибоначчи за O(log N)

Reading time4 min
Views79K
Читая статью об устройстве на работу в ABBYY, встретил в ней упоминание задачи:
быстро – за O( log N ) арифметических операций над числами – найти N-е число Фибоначчи
Я задумался над ней и понял, что сходу в голову приходят только решения, работающие за время O(N). Однако позже решение было найдено.
Читать дальше →

Коаны о программировании

Reading time4 min
Views36K
От переводчика: The Codeless Code — сборник побасенок о философии программирования. Побасенки в сборнике разные — некоторые весьма кровожадные, некоторые достаточно хардкорные с технической точки зрения (родной язык автора — Java), но встречаются очень емкие. Представляю вам перевод семи наиболее полюбившихся мне историй, остальные 30+ (новые добавляются каждую неделю) можно найти на сайте.

Пустяк


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

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

Мастер ответил: «Здесь есть изъян, и я размышляю, как лучше его исправить.»
Читать дальше →

Изучить Github за 15 минут

Reading time1 min
Views127K
TryGit — интерактивный обучающий курс по Github в стиле Codecademy. Курс состоит из 25 мини-уроков, которые знакомят пользователя с базовыми понятиями и основными командами git, при этом ученик своими руками вводит команды в консоль, смотрит результат и читает сопровождающие надписи с объяснением происходящего.



Вот таким в будущем должно стать обучение в школах!

Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.

5 полезных методов jQuery API, о которых вы могли не знать

Reading time2 min
Views55K
В статье я расскажу о пяти методах jQuery, которые я нашел для себя полезными и о которых, по моим наблюдениям, мало кто знает.

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

Скринкаст: Знакомство с Codeception

Reading time1 min
Views8K
Фреймворк для автоматического тестирования веб-приложений на PHP — Codeception живет и развивается. Но в этот раз вместо скупой порции новостей я бы хотел представить вам первый скринкаст в котором показаны азы работы с Codeception. Если вы только читали про Codeception, то вам обязательно стоит взглянуть на него в действии. Ну а если не читали, но у вас есть веб-сайт, который бы вы хотели протестировать — тоже взгляните.
Смотреть видео

Файервол для Linux с простым интерфейсом

Reading time4 min
Views22K
Файервол представляет из себя bash-скрипт, который интегрирует с помощью соответствующих пакетов следующие функции:
  1. Файервол внешний и внутренний (пакет iptables).
  2. Учёт трафика внешнего и внутреннего (пакет iptables).
  3. Прокси-сервер для локальных сетей (пакет Squid).
  4. Контент-фильтр для локальных сетей (пакет DansGuardian).
  5. DNS-сервер для локальных сетей (пакет BIND).

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

Магия JavaScript: arguments

Reading time3 min
Views68K
arguments — очень специфическая штука, о которой новички и даже любители знают только то, что это «вроде массив, но какой-то неправильный». На самом деле, у него есть ряд интересных особенностей. Предлагаю в топике пофантазировать на тему TypeHinting, аргументов по-умолчанию и всякого другого.
(function (foo, bar) {
	console.log(typeof arguments); // ?
	
	arguments[0] = 42;
	console.log(foo); // ?
})(10, 20);


А также покажу интересную идею-библиотеку
function test (foo, bar) {
    Args(arguments).defaults(100, 100);

    return [foo, bar];
};

test(      ); // 100, 100
test(15    ); //  15, 100
test(21, 42); //  21,  42

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

Как записывать скринкасты

Reading time4 min
Views3.3K
Поскольку я уже продолжительное время записываю скринкасты по Ruby и делаю это регулярно, думаю, что смогу поделиться несколькими советами о том, как сделать ваши скринкасты смотрибельными и полезными. У меня здесь, разумеется, корыстный интерес — я хочу, чтобы больше людей осознали в себе силы производить качественный образовательный материал и начали выкладывать его в сети, в том числе и у нас на hasBrains.

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

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

Защита для NGINX — NAXSI

Reading time3 min
Views39K

Что такое NAXSI ?


NAXSI = NGINX ANTI XSS & SQL INJECTION
Проще говоря, это файрвол веб-приложений (WAF) для NGINX, помогающий в защите от XSS, SQL-инъекций, CSRF, Local & Remote file inclusions.
Отличительными особенностями его являются быстрота работы и простота настройки. Это делает его хорошей альтернативой например mod_security и апачу.

Зачем нужен NAXSI ?

Очевидно, лучше всего защищаться от вышеперечисленных атак правильно написанным кодом. Но есть ситуации, когда WAF (и в частности naxsi), поможет:
  • Низкое качество кода сайта, при отсутствии возможности/ресурсов все выкинуть и переписать нормально.
  • “Закрытый” код, в котором невозможно исправить ошибки.
  • Неизвестное качество кода в важном для бизнеса участке.


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

Загрузка и инициализация JavaScript

Reading time10 min
Views43K

С появлением мобильного веба наш интернет стал снова плохим, а устройства медленными. 3G, 4G, Wi-Fi… — они, конечно, где-то есть, но когда очень надо, то как правило скорость падает до околомодемной и получается, что наши мобильный устройства «каменного века» попадают в условия современного объема информации. Даже в центре города (правда на 15-м этаже) значок мобильного интернета может показывать волшебную букву Е, намекающую о том, что уж лучше не тратить нервы и потерпеть. Лучше уж использовать нативную версию какого-то веб-сервиса, чем каждый раз ждать, загружать по мегабайту, чтобы отправить короткое сообщение. Нативную версию веб-сервиса... Понятное дело маркетинг, гонка приложений. Однако, же пользователи выбирают нативные веб-приложения, которые работают быстрее, не качают кучу ресурсов, хотя им приходится периодически его обновлять.

Эта статья о том какими путями можно оптимизировать загрузку и инициализацию JavaScript.
Читать дальше →

Python и Twisted — Заметки о параллельной обработке данных (мультипроцессности)

Reading time5 min
Views35K
imageTwisted — это фреймворк на Python для разработки сетевых приложений, который среди многих других применений, может быть использован и для параллельной обработки данных — мультипроцессности. Это замечательно, но мне пришлось попотеть для того, чтобы найти то, что мне нужно.

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

Javascript: ООП, прототипы, замыкания, «класс» Timer.js

Reading time19 min
Views97K
Здравствуйте программисты начинающие, законченные, а также все сочувствующие. Как известно, ничто не познается так хорошо, как на собственном опыте. Главное, чтобы опыт был полезный. И в продолжении этой простой мысли я хочу предложить заняться несколькими полезными делами сразу:
  • Побеседовать на тему «ООП с человеческим лицом».
  • Разобраться с прототипами в javascript, коротко и сердито!
  • Вспомнить, что «замыкание» это не только ценный мех… удар током.
  • Написать на javascript класс Timer — этакий планировщик событий для запуска анимаций, событий, любых функций.
  • Весело провести время!

Предупреждение! Если вы не ждете от статьи ничего веселого… то ошибаетесь. Людям с пониженным чувством юмора читать… еще более рекомендуется! Ну-с, приступим…
Читать дальше →

Переезд проекта с SVN на Git

Reading time8 min
Views73K
image
Много лет подряд в качестве системы контроля версий для большого количества проектов использовали только SVN. Но наступил момент, когда количество разработчиков на одном из проектов заметно увеличилось, проект уже запущен в работу, и нужно как активно разрабатывать параллельно несколько фич, так и фиксить уже имеющиеся баги в оперативном режиме. Единый trunk в SVN не позволяет этого делать, а организация бранчей в нем же превращает жизнь разработчиков в ад. Поэтому было принято решение о переезде этого проекта с SVN на Git.
Читать дальше о том, как это делается от А до Я

Коллекции объектов в PHP

Reading time7 min
Views31K
На протяжении последних 5 лет я работаю с PHP. У него есть достаточно разных проблем, но это никогда не мешало создавать отлично работающие продукты.

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

Чем пересылать посылки с литиевыми аккумуляторами?

Reading time3 min
Views54K
imageНе так давно интернет пестрил новостями о том, что почтовая служба США решила запретить c 16 мая 2012г пересылку устройств, содержащих литиевые аккумуляторы, воздушным способом, тем самым приняв рекомендациии Международной организации гражданской авиации (ICAO) и всемирного почтового союза (UPU) и перекрыв канал огромному потоку электроники из США в страны СНГ.

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

Mail-Forwarder'ы выжидали. В первые дни никто не делал заявлений о том, что пересылка айпадов и айфонов будет прекращена, все ждали прямых указаний от своих транспортных партнеров, но сначала Shipito, а потом и Бандеролька с рядом форвардеров калибром помельче рапортовали, что пересылку отправлений, содержащих литиевые батареи, они прекращают «до выяснения обстоятельств».

Пора паниковать? Нет, рановато.
Читать дальше →

Наш процесс разработки: 50 месяцев эволюции

Reading time9 min
Views44K
Нашей компании уже 6 лет. Она была основана на принципах agile и росла на них. Мы использовали Extreme Programming с самого первого дня, добавили немного Scrum позже и в конце концов переключились на Kanban. Хочется поделиться бесценным опытом и рассказать об изменениях нашего процесса разработки за последние 4 года.



Много ужасных таблиц и красивых картинок

Вникаем в метаклассы Ruby

Reading time6 min
Views54K

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.

Классы и объекты в Ruby связаны между собой достаточно затейливо и не сразу можно понять что к чему. Из-за особого назначения классов очень легко потерять из вида тот факт, что классы — это тоже объекты Ruby. От «обычных» объектов их отличает два вещи: они служат образцом для создания новых объектов и они являются частью иерархии классов. Все верно, классы могут иметь экземпляры себя (объекты), суперклассы (родителей) и подклассы (детей).

Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:

# один из способов создать новый класс
Dog = Class.new
    
# общепринятый способ создания класса
class Dog
    # какая-то реализация собачьего поведения
end

Dog.class
=> Class

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

Яндекс.Почта. Предотвращение хакострофы

Reading time9 min
Views49K
В ноябре прошлого года компания «Яндекс» провела конкурс на тему поиска уязвимостей в своем сервисе. Мне посчастливилось найти там пару дырочек и получить за это второе место. Так как за эти полгода я так и не опубликовал деталей (кроме как на встрече Defcon-Russia, но это было в устной форме для узкого круга посетителей), я решил восполнить этот пробел сейчас. Так что тут будет рассказ об одной из дырок, которая была обнаружена в рамках конкурса и оперативно закрыта компанией «Яндекс». Считаю, что конкурс полностью оправдал себя и позволил предотвратить страшные последствия, так что идея явно удачна, одни плюсы. Собственно рассказ будет о банальном отсутствии проверки авторизации в одном из скриптов, что могло привести к частичной компрометации более миллиарда писем лишь на одной ноде…
Сломай меня полностью...

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Date of birth
Registered
Activity