Обновить
16
0.3
Тимур@TimsTims

Не гадьте в карму, лучше пишите, в чём не согласны

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

Иллюзия скорости

Время на прочтение10 мин
Охват и читатели45K
Много лет я и мои коллеги убеждали разработчиков, что чем быстрее сайт — тем лучше. Статья не о том. Я не собираюсь показывать вам статистику, насколько больше зарабатывают компании, которые оптимизируют сайт для производительности (а это так). Расслабьтесь, возьмите чашечку шоколада — мы вместе совершим путешествие во времени.

Настоящее время и воспринимаемое время



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

Взлом Wi-Fi

Время на прочтение7 мин
Охват и читатели331K

Взлом маршрутизаторов WPA/WPA2 Wi-Fi с помощью Airodump-ng и Aircrack-ng/Hashcat


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

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Охват и читатели601K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →

Теория относительности в картинках

Время на прочтение6 мин
Охват и читатели378K
В своей статье я хотел бы рассказать о теории относительности. Эта теория не требуется в представлении. С самого своего создания она была окутана ореолом тайны, поскольку полностью подрывает наши привычные представления о пространстве и времени. Все мы в школе учили формулы теории относительности, но мало кто действительно понимал их. И это не удивительно, ведь человеку, чтобы по-настоящему понять какую-то теорию во всей её красоте, полноте и непротиворечивости, не достаточно знать формулы. Нужно иметь какой-то визуальный ориентир, нужна динамика, чтобы было что-то, что можно повертеть в руках. Я решил восполнить этот пробел и написал небольшую программку, в которой можно «повертеть в руках» пространство-время. Мы, как настоящие исследователи, с помощью небольших экспериментов попытаемся выяснить основные свойства этой загадочной материи.
Под катом много картинок (и ни одной формулы).
Читать дальше →

Становимся профессиональными PHP разработчиками. Часть 4: Работа в команде на практике

Время на прочтение6 мин
Охват и читатели8K
Предлагаю вашему вниманию перевод четвертой части цикла статей «Becoming PHP professional».

» Первая часть. «Недостающее звено»
» Вторая часть. «Важность других людей»
» Третья часть. «Работа в команде»

Ранее мы рассмотрели социальные аспекты работы в команде и ее плюсы и минусы. Однако, осталось еще много вещей, на которые стоит обратить внимание и многому научиться в работе с другими людьми.

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

Как я продолжил дело Дота-лиги

Время на прочтение7 мин
Охват и читатели14K
Предыдущие части (не за моим авторством): раз и два.

Возвышение Хоруса


Тимс был автором бота, а я был тем самым «прошаренным админом», который допиливал его код.

Можно долго спорить, кому что принадлежало, кто прав и кто виноват, но факт остается фактом — одна лига раскололась на две. Владелец бренда say-plz и спонсор поставил меня админом sP Dota League, а Тимс в тот же момент развернул RIHL (Russian In-House League). Между лигами была война за игроков используя любые средства, кроме разве что ядерного оружия.

Как произошел развал с моей точки зрения
Владельцем домена и хостинга say-plz был менеджер команды и спонсор под ником Матрикс. Он не знал, что происходит на лиге и не особо вникался в подробности. И после того, как Тимсу были предъявлены обвинения в неадекватном поведении и продаже модераторского доступа за деньги, у него был диалог со спонсором, в котором Тимс заявил примерно следующее: «это моя лига, что хочу, то и делаю». После чего Матрикс спрашивает меня — смогу ли я потянуть всё без участия Тимса? Я отвечаю ему — да. Ну а потом Матрикс снял права доступа с Тимса, сделав меня новым СЕО.

После того, как админом стал я, были внесены некоторые изменения в политику лиги.

1. Никаких необоснованных банов по личной неприязни.
2. Равные наказания и для известных игроков, и для новичков. Бан на 14 дней за намеренный выход из игры.
3. Моментальный демоут (из модеров в юзеры) тех, кто злоупотребляет своими правами — разбанивал друзей, или например пытался продать воучи (доступ к лиге) за деньги.
Читать дальше →

Как я Дота-лигу открывал. Часть 2

Время на прочтение12 мин
Охват и читатели21K

Начало здесь: Как я Дота-лигу открывал. Часть 1

Конец 2007-го, снова зима, и снова время развиваться. Мы успешно перенесли лигу из умирающего Battle.Net в восходящий Good Game Client (позднее — Garena). Новые игроки приходят каждый день, лига растёт, всех радует отсутствие читеров, отличный пинг и лёгкий процесс начала игры. Игроки зазывали своих друзей в эту платформу из Battle.net, из локальных сетей и пиратских серверов — все шли в Garena. Холодный декабрь побуждал людей оставаться дома и играть. Постоянный онлайн игроков Warcraft на этой платформе в СНГ-секторе вырос с 1000 до 10 000 игроков. Очень скоро, Garena стояла в каждом компьютерном клубе, а онлайн-турниры проводились только на ней.
Всё отлично, и у нас был единственный и самый крутой бот на этой планете платформе…
Читать дальше →

Как я Дота-лигу открывал. Часть 1

Время на прочтение12 мин
Охват и читатели36K

Шел 2006й год. Это были хорошие студенческие годы, время расцвета и становления игры DotA Allstars. В те времена все играли в доту через официальный сервер от Blizzard — Battle.net. Индустрия была очень скудная — не было нормальных трансляций, интернет у многих был еще на adsl, а из событий — мало освещаемые турниры с призами до $5000. Тогда инициативные игроки собирались в группы и организовывались в кланы. Именно тогда мне позвонил мой товарищ и предложил организовать первую Дота-лигу в СНГ. Это был настоящий вызов для меня, и он был принят…
Читать дальше →

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

Время на прочтение44 мин
Охват и читатели258K


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →

Настройка окружения для PHP разработчиков

Время на прочтение9 мин
Охват и читатели46K
В данной статье мы рассмотрим настройку окружения для PHP разработчиков с использованием Vagrant, Docker, Xdebug, PHPUnit, и интеграцию с IDE PHPStorm.

+

Требования


  • Окружение должно развертываться на Windows, MacOS, Linux
  • Установка должна быть максимально простой
  • Быстрая работа с файловой системой
  • Интеграция с IDE PHPStorm
  • Несколько версии PHP интерпретаторов (5.6, 7.0)

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

Как мы придумали и сделали свою первую игру на Android. Часть 1: Механика игры

Время на прочтение5 мин
Охват и читатели26K
Всем привет! Мы два новоиспеченных разработчика мобильных игр, бывшие одноклассники, выпускники Казанского федерального университета, Айдар и Эд.

Айдар: «История нашей игры «Syncomania» началась с того, что мне приснился странный сон. Он представлял собой компьютерную игру, где на квадратном поле синхронно передвигались четыре белых шарика. Когда первый из них вырвался за пределы игрового поля, я проснулся. Наутро я позвонил Эду, а уже в обед мы встретились во дворе университета, где я работал».

Эд: «Какой программист не мечтал сделать свою игру? Летом 2014-го у меня было много свободного времени, и я с радостью ухватился за эту идею. Тогда мы и представить себе не могли, с какими трудностями мы столкнемся».

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

Итак, на входе у нас была одна простая идея — игрок одним движением управляет четырьмя героями.
Читать дальше →

Мультиплеер в быстрых играх (Часть III: появление врага)

Время на прочтение4 мин
Охват и читатели57K


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)

Введение


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

В этой статье мы рассмотрим последствия одновременного подключения нескольких игроков к одному серверу.
Читать дальше →

Битовые операции в PHP на примерах

Время на прочтение3 мин
Охват и читатели92K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →

Go с точки зрения PHP программиста

Время на прочтение8 мин
Охват и читатели69K
Предлагаю вашему вниманию перевод статьи Go from PHP engineer's perspective с сайта sobit.me.

Будучи PHP программистом, задумывались ли вы об идее изучения других языков программирования?

Уже много лет выбор многих компаний падает на PHP для создания полноценных монолитных приложений. Более того, за последние 5 лет фреймворки (Symfony, Laravel, Zend), инструменты (Composer, Monolog) и стремительно растущее сообщество (PHP-FIG) помогли многим разработчикам в создании программного обеспечения на уровне предприятий. Многие компании, такие как Facebook, Yahoo!, Wikipedia, Wordpress, Tumblr, начинали свою историю с PHP, и это не помешало им стать успешными в последующие годы.

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

В этой статье мы попытаемся понять, как далеко мы сможем зайти, имея в арсенале только PHP, и где может вступить Go, чтобы помочь решить проблемы, с которыми нам предстоит столкнуться.
Читать дальше →

Электромагнетизм для самых маленьких, и не только

Время на прочтение6 мин
Охват и читатели44K
Если говорить об «электромагнетизме Максвелла», то народ в целом делится на две группы: первые считают, что знают на эту тему если не всё, то вполне достаточно. Потому что ничего сложного там нет. Вторые не совсем знают эту тему и не хотят знать. Так как непонятные формулы и вообще.

Натыкаясь в разных местах на то, как объясняются некоторые моменты: с одной стороны убедительно, с другой сомнительно, с третьей неверно, с четвертой, в принципе и верно… думаю, стоит на всякий случай приглядеться им, а так как начать придется от оснований, то и «самые маленькие» могут поднянуться без боязни формул.

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


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

Электродвигатели: какие они бывают

Время на прочтение23 мин
Охват и читатели386K


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

В этой статье будет небольшой обзор по разным типам электродвигателей с фотографиями и примерами применений. Почему в пылесос ставятся одни двигатели, а в вентилятор вытяжки другие? Какие двигатели стоят в сегвее? А какие двигают поезд метро?

Каждый электродвигатель обладает некоторыми отличительными свойствами, которые обуславливают его область применения, в которой он наиболее выгоден. Синхронные, асинхронные, постоянного тока, коллекторные, бесколлекторные, вентильно-индукторные, шаговые… Почему бы, как в случае с двигателями внутреннего сгорания, не изобрести пару типов, довести их до совершенства и ставить их и только их во все применения? Давайте пройдемся по всем типам электродвигателей, а в конце обсудим, зачем же их столько и какой двигатель «самый лучший».
Читать дальше →

Делаем вебсокеты на PHP с нуля

Время на прочтение18 мин
Охват и читатели320K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →

Проброс DLNA в удаленную сеть

Время на прочтение5 мин
Охват и читатели60K
Предыстория:

Итак, появилась необходимость дать возможность просматривать фильмы с моего сервера на телевизоре. Ну казалось бы, поднимаем DLNA, например miniDLNA и проблема решена. Так и было, пока не появилась нужда дать такую же возможность родителям, которые живут в другом месте, и ставить им там сервер или простенький nas не хотелось. Было принято решение объединить наши сети путем туннелирования трафика и дать доступ к моей фильмотеке.
Читать дальше →

Как вырастить айтишника

Время на прочтение4 мин
Охват и читатели28K


Как недавно признался Цукерберг, «я никогда не стал бы программистом, если бы не играл ребёнком в компьютерные игры». Не станем утверждать, что путь к успеху в IT лежит через геймерство. Но всё же без тесного знакомства с самыми разными программами и гаджетами программисту не обойтись. И в наши дни знакомство это начинается с достаточно раннего детства. Информационные технологии уже давно проникли в нашу жизнь. Современные программисты, в детстве игравшие на приставках и компьютерах, зачастую сталкивались с непониманием родителей, в чьей молодости не было подобных вещей. Зато теперь эти самые программеры сами обзавелись детьми и гораздо лучше понимают их увлечения. Зачастую даже становятся этакими наставниками по хайтек-развлечениями, обучая детей премудростям комбо-ударов, постройки юнитов и частой отправки врагов на респаун. Как волки обучают волчат азам охоты. И нам стало любопытно, во что же программисты сегодня могут поиграть со своими детьми? И не просто поиграть, а с пользой для молодого ума.
Читать дальше →

Как создать мощную систему игровых достижений

Время на прочтение9 мин
Охват и читатели42K
Признаюсь, раньше я испытывал особую неприязнь к игровым достижениям. Сейчас мне сложно вспомнить откуда растут ноги, но я не исключаю, что из-за ужасной реализации в большинстве игр. Кто старое помянет — тому глаз вон, поэтому просто признаем неоспоримый факт: геймдизайн с тех пор сильно эволюционировал.



Хотя игровые достижения не должны быть основной целью в вашей игре, это не мешает им существенно влиять на поведение игрока и его вовлеченность. Давным-давно, на одном из крупных проектов передо мной поставили масштабную задачу: создать мощную систему игровых достижений. В течении следующих 30 месяцев, я, как раб на галерах, провел за проектированием и тестированием различных систем достижений в сотнях игр. Меня поглотила бесконечная обработка данных: игровых комментариев, постов на форумах, непосредственное общение с игроками, изменения в игровых рейтингах. Я совершил и продолжаю совершать кучу ошибок, но я также усвоил несколько бесценных уроков. И эти знания нельзя держать в секрете…
Перейти к урокам

Информация

В рейтинге
2 421-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность