Как стать автором
Обновить
23
0.3

Пользователь

Отправить сообщение

Латентность при загрузке веб-страниц

Время на прочтение3 мин
Количество просмотров35K
Пост «Кое-что о весе страницы» вызвал у меня желание написать маленькое дополнение. Многие замечают, что оптимизация размера веб-страниц становится менее актуальной в связи с увеличением пропускных способностей каналов. Рано или поздно все будут сидеть на гигабите, и будет совершенно неважно, весит ваша страница 100Кб или 250. Возможно, так оно и будет. Однако помимо скорости канала есть и другой параметр — задержка или латентность. И если пропускная способность каналов с развитием технологий может вырасти ещё очень сильно, то у латентности существует физический предел: это скорость света в оптоволокне — около 200 тысяч километров в секунду.

Хотя эта скорость очень велика, но всё же недостаточно, чтобы о ней забывать, ведь и планета у нас немаленькая. Wolfram Alpha не зря выдаёт на запросы по расстоянию время прохождения этого расстояния светом в волокне. Пусть у вас стоит сервер в Токио, а клиент пришёл из Рио-де-Жанейро. Если даже эти два города соединить оптоволокном по кратчайшей траектории на поверхности Земли, свет будет идти 86.7 мс.
Читать дальше →
Всего голосов 100: ↑96 и ↓4+92
Комментарии91

Создание гостевого доступа в Интернет с Web-аутентификацией

Время на прочтение8 мин
Количество просмотров41K
Приветствую, коллеги.

Пролог


Возникла у нас задача – сделать гостевой интернет. Т.е. гость приходит, подключается к сети (WiFi или кабель) и пытается выйти в Интернет. При попытке зайти на сайт у него «должно спросить пароль».
Надо отметить, подобные вопросы о решении такой задачи часто возникают на форумах. Есть куча платного софта (не рассматривался в принципе, ибо задача низкоприоритетная) и какие-то бесплатные решения. Поиск по форумам не дал определиться с выбором, посему было решено в свободные минуты сделать сие самостоятельно.

Основными требования:


Ресурсы на создание – как человеческие (рабочее время), так и материальные – минимальны.
Нагрузка – маленькая. Обычно такой системой будут пользоваться не более 10 человек в день.
Критичность доступности – низкая. Если система сломалась – то ремонтировать будут в последнюю очередь. Потеря нескольких пакетов – не принципиальна.
Изолированность – полная. Если сломают какие-либо части – локальная сеть не должна пострадать.
Платформонезависимость – клиентами будут всякие гаджеты – от телефона до большого компа.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии26

Сети для самых маленьких. Микровыпуск №1. Переход на GNS3

Время на прочтение9 мин
Количество просмотров117K


Мы немножко нарушим хронологию цикла Сети для самых маленьких.
Компания ЛифтМиАП разрастается, покупая новые филиалы по всей стране. Поэтому следующая наша статья будет посвящена технологиям VPN и подключению удалённых офисов к центральному. Будут обсуждаться такие темы, как GRE, IPSec и DMVN. Тут Packet Tracer уже едва ли может нам чем-то помочь.
Пришло время для больших игр и перехода на профессиональное ПО для симулирования сети. Да и темы, положа руку на сердце, уже не для самых маленьких.

На выбор в сегодняшнем меню:

  • GNS3 — Graphical Network Simulator
  • IOU — IOS on UNIX


Под катом аргументы за и против и частичный перенос топологию из РТ в GNS, а сначала традиционное видео, на этот раз умеренной длины.



Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии36

Как сделать 3D шутер на JavaScript за пару дней

Время на прочтение3 мин
Количество просмотров84K
imageВ субботу у меня ближе к полуночи появилось свободное время и жгучее желание сделать игрушку под браузер, забавы ради и увеличения опыта для. С жанром определился довольно быстро: т.к. на MMORPG в этот раз у меня точно не хватило бы времени, я решил делать просто мясорубку. Минут 20 ушло на написание базового кода для управления игроком и его противниками. И тут встал вопрос — 2D или 3D (вернее так: Canvas/SVG или все же полноценный WebGL)?
Читать дальше →
Всего голосов 102: ↑98 и ↓4+94
Комментарии65

Простой мокинг запросов к серверу + unit-тестирование блоковых коллбэков в Objective-C

Время на прочтение3 мин
Количество просмотров7.2K
Зачем

1. Зачем подменять ответ сервера?
Я всегда был и буду сторонником подхода, когда каждый отвечает за свою доменную область. И скажем, если сервер с API сломался, то обнаружить это должны юнит-тесты бэк-енда, а не свалившиеся тесты моего iOS-приложения.

2. Зачем использовать блоки, почему не target-action, делегирование и так далее?
Это личное предпочтение каждого, почти во всех ситуациях разрабатываемые мной объекты будут иметь блоковые коллбэки а не вызывать методы делегата. Для меня это работает и особых проблем с этим подходом я не испытал. В конце концов, блоки — это стильно, модно, молодежно!

Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии12

Как я свое бесплатное приложение для Android платным делал

Время на прочтение3 мин
Количество просмотров20K
В середине 2011 года я опубликовал свое второе приложение в Android Market. Приложение — достаточно простое, нацелено на российский рынок (точнее, даже на один единственный город), сезонное. Что самое важное — аналогов такого приложения в Android Market'e в то время не было.
Приложение было, конечно же, бесплатным. Бесплатное, но с рекламой, которую можно было отключить через in-app purchase. За год на рекламе и на отключениях рекламы мне удалось заработать $18.63. Было принято решение сделать приложение платным. О том, как я это делал — далее.
Читать дальше →
Всего голосов 79: ↑66 и ↓13+53
Комментарии34

MySQL: разрушаем стереотипы

Время на прочтение5 мин
Количество просмотров59K
В последнее время часто стал натыкаться на различные рассуждения людей, по поводу того, что MySQL — это плохо, это очень плохо — потому что… а вот дальше идут описания различных фич MySQL, которые четко документированы, но пользователь их просто не знает. Кто-то добавляет в БД данные без валидации и удивляется почему они сохранились в неверном формате, а кто-то описывает кучу особенностей myIsam движка, и на этих основаниях делает вывод, что MySQL это отстой — который невозможно использовать в реальных проектах. Всю документацию прочитать невозможно, и да — я с этим абсолютно согласен, но поверьте у нас есть куча других недокументированных и не менее интересных особенностей. Давайте начнем с малого, к примеру докажем, что NULL равно нулю.
это новогодний пост - отнеситесь к нему с юмором, качаем последний MySQL и поехали
Всего голосов 131: ↑118 и ↓13+105
Комментарии125

Google планирует привлечь 90% пользователей MS Office на Google Apps

Время на прочтение2 мин
Количество просмотров30K


В уходящем 2012 году Google сделала серьёзные шаги навстречу корпоративным пользователям, запустив Google Drive и облачный сервис Compute Engine. Пользователей планомерно и довольно успешно переводят на облачные сервисы, естественной частью которых являются офисные приложения Google Apps.

Наступающий 2013 год сулит ещё большие изменения на рынке офисного ПО — похоже, компания Google всерьёз намерена разрушить одну из последних монополий в мире ИТ, а именно, монополию MS Office. Вице-президент Google и руководитель направления Enterprise Амит Сингх (Amit Singh) озвучил амбициозную цель: привлечь на Google Apps 90% корпоративных пользователей Microsoft Office. Именно так оценивается количество пользователей, которым не нужна полная функциональность MS Office, а достаточно базового набора функций.
Читать дальше →
Всего голосов 56: ↑43 и ↓13+30
Комментарии184

Electric Imp — Делаем WiFi термометр

Время на прочтение5 мин
Количество просмотров72K
Многие из вас знакомы с анонсом Electric Imp, который не так давно был на хабре, кроме того уже начинают появляться первые впечатления от его использования. Поскольку это устройство мне показалось перспективным и довольно интересным, я при первом появлении в продаже версии developer edition заказал себе чтобы немного поиграться и оценить возможности.
Читать дальше →
Всего голосов 51: ↑43 и ↓8+35
Комментарии20

Уроки написания утилитки на $1 000 000

Время на прочтение4 мин
Количество просмотров197K


Осенью 2008 года мы потратили две-три недели свободного от основной работы времени, чтобы написать маленькую утилитку для бэкапа баз данных (MS SQL Server и потом MySQL). Сегодня она приносит нам около $230 000 в год и можно с уверенностью говорить, что суммарно мы заработаем на ней больше $1 000 000.

Под катом я расскажу, как это получилось и какие уроки мы из этого извлекли. Вполне возможно, что нам просто глупо повезло и опыт этот целиком неверен и теории не соответствует и только навредит вашему начинанию — читайте на свой страх и риск.
Читать дальше →
Всего голосов 471: ↑457 и ↓14+443
Комментарии247

Ответы министра связи на вопросы хабрапользователей: часть 3

Время на прочтение9 мин
Количество просмотров40K
Всем привет! От министерства связи к нам пришла новая партия (уже третья) ответов на вопросы хабрапользователей. Ознакомиться с ними можно под катом. Сегодня речь про Почту России, кстати.

Читать дальше →
Всего голосов 44: ↑38 и ↓6+32
Комментарии163

Один из способов адаптации настольных приложений под сенсорный экран

Время на прочтение3 мин
Количество просмотров14K
Поработав некоторое время с Windows 8 на планшете и ультрабуке с сенсорным экраном, я столкнулся с одной интересной особенностью. При работе с полями ввода в настольных (desktop) приложениях экранная клавиатура не появляется автоматически, приходится каждый раз вызывать путем касания значка в системном лотке, а потом закрывать нажатием на кнопку закрытия окна.
В Windows UI приложениях такой проблемы нет, клавиатура автоматически появляется, как только поле ввода получает фокус и исчезает, когда в ней отпадает необходимость — например, элемент управления потерял фокус ввода, либо пользователь начал вводить текст с «железной» клавиатуры.
Так как я не только пользователь, но и разработчик, то подумал: а что если перенести это поведение экранной клавиатуры и в свои настольные приложения? Задача поставлена, ищем решение.
Поздравляю хабрачитателей с приближающимися праздниками! Всем, дочитавшим до конца — готовый к использованию код в подарок! :)
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии16

Бездисковая загрузка по сети и жизнь после нее

Время на прочтение6 мин
Количество просмотров114K

История


Однажды к нам пришли (ну, не сами...) серверы с 14 хардами по 2Тб. Избавившись от аппаратного рейда (зачем — вопрос отдельный), мы задумались о том, что неплохо бы сделать для них загрузку по сети, дабы избавиться от возни с разделами. Диски предполагалось экспортировать по iSCSI, и не хотелось выделять какие-то диски на Особенные Системные Диски, а какие-то на всё остальное. Таким образом возникла задача сделать загрузку по сети с размещением корневого каталога в оперативной памяти.
Читать дальше →
Всего голосов 72: ↑69 и ↓3+66
Комментарии41

Процесс загрузки Windows или что спрятано под стартовым логотипом

Время на прочтение5 мин
Количество просмотров169K
А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «Starting Windows»? И вообще, почему она долго загружается? Ведь при старте системы уж точно не решаются никакие задачи, сложные с вычислительной точки зрения!

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

Давайте интереса ради разберемся, какие модули, в каком количестве и в каком порядке загружаются при старте ОС. Чтобы выяснить это, можно, например, получить лог загрузки системы. Подопытная ОС в моем случае — Windows 7 Enterprise x64. Логировать процесс загрузки будем при помощи отладчика ядра. Существует несколько вариантов отладчиков ядра, лично я предпочитаю WinDbg. Также нам понадобятся некоторые вспомогательные средства для волшебного превращения лога в нечто более приятное глазу.
Читать дальше →
Всего голосов 160: ↑154 и ↓6+148
Комментарии26

Математическая библиотека Numbers.js

Время на прочтение1 мин
Количество просмотров17K
Numbers.js добавляет к стандартным математическим возможностям JavaScript немного продвинутой математики — интегралы, операции над матрицами и комплексными числами, статистические функции, факторизацию и некоторые другие функции. Кроме того, библиотека определяет базовые арифметические операции над массивами — сложение, вычитание и умножение элементов, поиск минимума и максимума, случайное перемешивание массива и позволяет в явном виде задавать необходимую точность вычислений, что помогает избежать ошибок округления.
Примеры использования
Всего голосов 56: ↑51 и ↓5+46
Комментарии37

Как обойтись без dyndns

Время на прочтение1 мин
Количество просмотров43K
Доброе время суток.

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

Имеем дома роутер с поднятым клиентом dyndns, который в один момент перестал работать. Желание подключиться к домашней сетке было большим, также была увереность в том, что роутер живой. Пришлось искать пути решения возникшей проблемы.
Читать дальше →
Всего голосов 76: ↑47 и ↓29+18
Комментарии47

Технология быстрого создания фонов для 2D-игр на базе 3D-заготовок (48 часов разработки)

Время на прочтение15 мин
Количество просмотров150K

Вместо предисловия


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

Перед тем как начать я хотел бы сделать акцент на двух положениях:
Первое. Мы исходим из того что читатель знаком с такими пакетами как 3D Studio MAX (либо любым другим пакетом трехмерного моделирования) и Photoshop (или любым его аналогом). В данном конкретном случае я собираюсь использовать терминологию этих двух пакетов. Однако, не смотря на это те же самые принципы можно использовать, пользуясь любым другим софтом.

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

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

Хочу также отметить, что я не причисляю себя к мастерам, которые делают шедевры. Данное примечание я делаю для тех злых людей, которые говорят (или скажут после публикации), что я заносчив, что меня занесло под небеса, и тех кто вместо того чтобы работать предпочитает злословить словно ябедник Кийр из моей любимой книги Оскара Лутса «Весна».

С преамбулами покончено перейдем к сути.

Я утверждаю и не беспочвенно, что хороший фон можно и нужно создавать не за неделю, не за пять дней и даже не за три. Чтобы сделать хорошую картинку для казуальной игры, без разницы i-spy это, match-3 или аркада, достаточно 48 часов. Разумеется, при условии того, что человек занимается работой, а не просиживанием штанов.

image

Читать дальше →
Всего голосов 293: ↑288 и ↓5+283
Комментарии102

Что не пишут в википедии о глобальных навигационных спутниковых системах

Время на прочтение8 мин
Количество просмотров43K
Вдохновлённый серией постов «Теория радиоволн», я решился на аналогичный пост о системах спутникового позиционирования. Я работаю в структуре, которая занимается обеспечением функционирования системы ГЛОНАСС, поэтому постараюсь рассказать о ней и её конкурентах с несколько другой точки зрения. Пост будет именно об их устройстве, попутно хотелось бы развеять несколько мифов.
Читать дальше →
Всего голосов 178: ↑174 и ↓4+170
Комментарии161

Беспроводная передача данных, ISM-диапазон

Время на прочтение16 мин
Количество просмотров39K

В последнее время на Хабре было описано множество примеров реализации погодных термометров, систем сбора информации, управлением в системах «умный дом» — как проводных, передающих информацию по Ethernet, так и беспроводных, по WiFi™. В каждом конкретном случае — есть своя специфика, есть свои плюсы и минусы. И в данном материале речь пойдет об еще одном способе передачи данных — передаче в ISM-диапазоне 868 МГц.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии16

Проектирование приложений: как стать ближе к пользователю?

Время на прочтение10 мин
Количество просмотров19K
В предыдущей статье («Не говорите мне, куда мне идти») мы рассмотрели вопрос структурирования информации в приложении и вытягивания важных блоков наверх с тем, чтобы сделать их более доступными для пользователя.

Как я писал, в современном мобильном мире особенно критично уметь одновременно решать две конфликтующие за место под солнцем задачи: 1) обеспечивать быстрый доступ к актуальной информации, самым важным действиям и в целом высокую скорость выполнения ключевых сценариев – и в то же время 2) позволять пользователям погружаться в детали, узнавать подробности и реализовывать важные, но все же вторичные действия.

Кто-то увидел в статье квадратики и информеры на картинках, но, я надеюсь, что от любопытного читателя не ускользнула и суть статьи.
Читать дальше →
Всего голосов 41: ↑33 и ↓8+25
Комментарии14

Информация

В рейтинге
2 172-й
Зарегистрирован
Активность