• Где мои деньги, чувак: о чем молчит Steam

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



      Мы много будем говорить о Steam, самой крупной открытой платформе для игр, потом посмотрим на 3rd-party дистрибуцию и альтернативные варианты продаж. До того, как вы найдете свои собственные ответы — давайте трезво посмотрим на то, как маховик издания игр работает сейчас.

      Простите, ребята, но это будет очень меркантильная статья с цифрами и процентами — я считаю, что если создание игр ваша страсть и ремесло, без них сложно уверенно идти вперёд. Начнём с цен, скидок и того, как работает список желаемого в Steam.
      Читать дальше →
    • Два типа расширений PHP. Zend extension VS PHP module

        image


        Какие расширения вообще бывают


        PHP module – оно же обычное расширение PHP
        К этому типу относится подавляющее число расширений в PHP. Все то, что подключается в php.ini с помощью инструкции extension=some_library.so — это они и есть.


        Zend extension
        Расширений такого типа крайне мало, однако они ничуть не менее востребованы.


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

        Читать дальше →
      • TON: Telegram Open Network. Часть 2: Блокчейны, шардирование

          TON


          Данный текст — продолжение серии статей, в которых я рассматриваю структуру (предположительно) готовящейся к выходу в этом году распределенной сети Telegram Open Network (TON). В предыдущей части я описал её самый базовый уровень — способ взаимодействия узлов между собой.


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


          Сегодня посмотрим на основной компонент TON — блокчейн.

          Читать дальше →
        • Domain fronting: что это такое?


            Вы уже наверняка слышали про domain fronting, особенно в контексте блокировки РКН серверов Google, отвечающих за сам google.com, и дальше последовавший запрет Google и AWS на использование их доменов для обхода блокировок.

            Что же такое прикрытие доменом?
          • Зомби, которые съедают вашу память

            • Translation
            • Tutorial
            Что бы вы там себе не думали, а зомби существуют. И они действительно едят мозги. Не человеческие, правда, а компьютерные. Я говорю сейчас о зомби-процессах и потребляемых ими ресурсах. Это будет душераздирающая история о потерянных и снова найденных 32 ГБ оперативной памяти. Возможно, лишь некоторые из вас столкнутся с точно такой же проблемой, но если вдруг это произойдёт — у вас хотя бы будет шанс понять, что происходит.

            Начнём с того, что компьютеры под управлением ОС Windows склонны со временем терять память. Ну, по крайней мере, у меня, при моём способе ими пользоваться. После пары недель без перезагрузок (или, например, всего одного уикэнда за который я 300 раз пересобрал Хром) я стал замечать, что диспетчер задач начинает показывать мне очень маленькое количество свободной оперативной памяти, но в то же время в системе нет никаких процессов, которые эту самую память активно используют. В том примере выше (с 300 сборками Хрома) диспетчер задач сказал мне, что в системе занято 49.8 ГБ плюс ещё 4.4 ГБ памяти сжато — но при этом запущено всего несколько процессов, и все они в сумме даже и близко не используют столько памяти:

            image

            В моём компьютере 96 ГБ оперативной памяти (да, я счастливчик) и когда у меня нет вообще никаких запущенных процессов — я, знаете ли, хотел бы видеть ну хотя бы половину этой памяти свободной. Я правда рассчитываю на это. Но иногда этого достичь не удаётся и мне приходится перезагружать ОС. Ядро Windows написано качественно и надёжно (без шуток), так что память не должна бы пропадать бесследно. Но всё же она пропадает.
            Читать дальше →
          • Формирование изображений без объективов

            • Translation

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


            Ещё средневековые ремесленники умели создавать стеклянные линзы и искривлённые зеркала для проецирования изображений. Такие конструкции использовались для изготовления микроскопов, камер-обскур, телескопов и прочих инструментов, позволяющих нам лучше увидеть очень маленькие и большие объекты, расположенные вдалеке и поблизости, на Земле и в небесах. Следующая революция в формировании изображений произошла примерно в середине XIX века: была изобретена фотография. Появилась возможность запечатлевать «остановленные моменты», воспроизводить их и тиражировать. Сегодня эра химической фотографии подходит к завершению, расцветает новая эпоха — цифровое формирование изображений. Его корни лежат в технологии телевидения, но мы будем считать началом эпохи 1975 год, когда появилась первая цифровая фотокамера. Сегодня миллиарды веб-камер и камер в мобильных телефонах по всему миру снимают более триллиона изображений в год, и многие из них сразу же выкладываются в интернет. Несмотря на взрывной рост количества, разнообразия и способов применения систем формирования изображений, задачи инженеров-оптиков остаются по большей части неизменными: создавать высококачественное оптическое изображение, как можно точнее передающее снимаемую сцену — чтобы «выглядело хорошо».

            Читать дальше →
          • Как движется Солнечная система

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



              Ролик, вышедший в 2012 году, стал вирусным и наделал много шума. Мне он попался вскоре после его появления, когда я знал о космосе гораздо меньше, чем сейчас. И больше всего меня смутила перпендикулярность плоскости орбит планет направлению движения. Не то, чтобы это было невозможно, но Солнечная система может двигаться под любым углом к плоскости Галактики. Вы спросите, зачем вспоминать давно забытые истории? Дело в том, что именно сейчас, при желании и наличии хорошей погоды, каждый может увидеть на небе настоящий угол между плоскостями эклиптики и Галактики.
              Читать дальше →
            • JPoint 2017 — конференция, которая смогла. Обзор лучших докладов в открытом доступе

                Недавно коллега задал привычные уже вопросы про «зачем ходить на конференции» и «зачем смотреть записи на YouTube». Так как это друг, а не просто какой-то произвольный человек, захотелось ответить более обстоятельно, детально и по чесноку. К сожалению, в режиме онлайн, при живом общении, сделать это сложно: просто не упомнишь всех подробностей. С другой стороны, это отличная тема для хабрапоста: можно один раз написать развёрнутый обзор и потом, как истинный социофоб, отвечать на все вопросы ссылками на Хабр.


                Идея проста: надо взять наиболее популярные доклады с JPoint 2017, кратенько пересказать, о чём там речь, почему это круто и зачем нужно лично мне. Каждый из этих докладов заслуживает отдельного разбора, но вначале — краткий обзор первой десятки. Поехали!



                Читать дальше →
                • +48
                • 25.7k
                • 6
              • Meeting Room Little Helper

                  Сегодня я расскажу вам о приложении, которое создавалось в «Аркадии» для удобства бронирования переговорных комнат.



                  Есть два основных сценария использования этого приложения:

                  1. Поиск свободной комнаты
                  Ежедневно в компании проходит множество митингов, переговорки бронируют менеджеры, разработчики и сотрудники HR-отдела. Поиск комнаты для митинга может быть довольно долгим и рутинным занятием. Чтобы понять, какая из комнат свободна в данный момент, необходимо зайти в календарь Outlook (или открыть дверь, отвлекая внимание участников проходящего совещания), просмотреть полное расписание по комнатам, найти свободный слот времени и создать appointment. За это время кто-то из сотрудников может забронировать комнату, и тогда необходимо начинать поиск заново. Гораздо удобнее сделать бронирование нажатием одной кнопки при помощи приложения, заранее получив подсказки о статусе комнат.

                  2. Ad hoc бронирование
                  Довольно часто возникает ситуация, когда нужно собраться минут на 15, чтобы коротко обсудить текущие задачи по проекту. В этом случае нет смысла занимать комнату на целый час, да может и не быть свободных слотов на выбранное время. Но если остаётся хотя бы 10 минут до следующего митинга, приложение позволит забронировать комнату, и для короткого митинга этого может быть вполне достаточно. Также иногда возникает ситуация, когда комната была забронирована на долгий срок, например, 2 часа, но митинг завершился раньше. В этом случае по завершении митинга можно нажать на кнопку отмены и освободить комнату.
                  Читать дальше →
                • Как мы разработали технологию обнаружения устройств поблизости



                  Эта история началась с функции “Рядом” в одном из наших мобильных приложений. Мы хотели, чтобы пользователи могли быстро создать групповой чат или добавить находящихся рядом пользователей в друзья. Мы попробовали решить эту задачу при помощи геолокации, Bluetooth, Wi-Fi и ультразвука, но у каждого из способов мы обнаружили критичные в нашем случае недостатки.

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

                  В статье мы расскажем о принципе его работы, а также рассмотрим достоинства и недостатки других распространенных способов обнаружения устройств.
                  Читать дальше →
                • Почему важно проверять, что вернула функция malloc

                    malloc

                    Предлагаем вашему вниманию цикл статей, посвященных рекомендациям по написанию качественного кода на примере ошибок, найденных в проекте Chromium. Это шестая часть, которая будет посвящена функции malloc. Вернее, тому, почему следует обязательно проверять указатель, возвращаемый этой функцией. Скорее всего, вы не догадываетесь, какой подвох связан с malloc, потому рекомендуем познакомиться с этой статьей.

                    Примечание. В статье под функцией malloc часто будет подразумеваться, что речь идёт не только именно об этой функции, но и о calloc, realloc, _aligned_malloc, _recalloc, strdup и так далее. Не хочется загромождать текст статьи, постоянно повторяя названия всех этих функций. Общее у них то, что они могут вернуть нулевой указатель.
                    Читать дальше →
                  • Создаем CSS кейлоггер

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


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

                      Читать дальше →
                    • Эволюция системных вызовов архитектуры x86

                        Про системные вызовы уже много было сказано, например здесь или здесь. Наверняка вам уже известно, что системный вызов — это способ вызова функции ядра ОС. Мне же захотелось копнуть глубже и узнать, что особенного в этом системном вызове, какие существуют реализации и какова их производительность на примере архитектуры x86-64. Если вам также интересны ответы на данные вопросы, добро пожаловать под кат.

                        Читать дальше →
                      • Добываем Wi-Fi соседа стандартными средствами MacOS

                          Я всегда был фанатом багов и уязвимостей «на поверхности», всегда завидовал чувакам, которые пишут эксплойты для самых защищённых ОС, а сам умел только скрипткиддить (термин из нулевых). Однако мой пост про уязвимости в системах контроля версий набрал более 1000 лайков на Хабре и остаётся топ1 постом за всю историю Хабра, несмотря на то, что был написан 9(!) лет назад.

                          И сегодня я хотел бы на пальцах показать и рассказать про такую штуку, как вардрайвинг. А точнее, как стандартными средствами MacOS можно добыть пароли от Wi-Fi соседей. Нелёгкая забросила меня на очередную квартиру. Как-то исторически сложилось, что я ленивый. Пару лет назад я уже писал, что моя лень, новая квартира и провод Beeline (бывшая Corbina) помогли мне найти багу у Билайна и иметь бесплатно интернет в их сети. «Сегодня» происходит «подобное», я на новой квартире, нет даже провода, но есть много сетей у соседей.


                          Заколебавшись расходовать мобильный трафик, я решил, что «соседям надо помогать», и под «соседями» я имел введу себя…
                          Читать дальше →
                        • Что общего у собеседования кодера и игры «Змейка»?

                          • Translation

                          Если вы родились в 80-х или 90-х, то наверняка слышали о Snake. То есть, скорее всего, вы потратили безумное количество времени на своём Nokia 3310, выращивая огромную змею на мелком экранчике. Что ещё мы помним о телефонах Nokia?

                          Их неразряжающийся аккумулятор, правда? Как такой «примитивный» телефон выдерживал долгие часы игры в «Змейку» без разрядки аккумулятора?

                          Короткий (и неполный) ответ: всё дело в методе скользящего окна.

                          Мы бы с радостью написали целую статью о Snake, но в этом посте мы всё-таки рассмотрим менее зрелищный, но тем не менее очень важный метод, и ответим на вопросы типа:

                          • Почему мы и другие программисты считаем его фундаментальным алгоритмом?
                          • Почему он так часто используется на технических собеседованиях?
                          • Как он использовался в Snake и других «реальных» областях применения?
                          • На какие самые популярные вопросы собеседований можно (лучше) ответить с помощью метода скользящего окна?

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

                          NB: Если вас волнует только «Змейка» (и мы вас вполне понимаем), то можете перейти к самому концу поста.
                          Читать дальше →
                        • Как устроен dtraceasm в JMH

                            В последней версии Java Microbenchmark Harness (JMH) появился новый профайлер — dtraceasm, долгожданный порт perfasm на Mac OS X, который умеет показывать ассемблерный профиль Java-бенчмарка.


                            Блиц-опрос показал, что не всем понятно, как в принципе возможно, получив на входе Java-метод, на выходе показать ассемблерный листинг скомпилированного метода с самыми горячими инструкциями, их распределением и небольшим профилем вида "А еще 5% времени виртуальная машина провела в методе Symbol::as_C_string(char*, int)".


                            В процессе портирования perfasm выяснилось, что на самом деле™ все не очень сложно и появилось желание рассказать, как такой профайлер устроен.


                            Для понимания статьи крайне желательно ознакомиться с JMH, например, посмотрев на примеры его использования.

                            Читать дальше →
                            • +32
                            • 4.9k
                            • 4
                          • Температура и давление фантастики — часть 1/3

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

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

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

                              Часть 1. pT-диаграмма

                              Читать дальше →
                            • JTAG в каждый дом: полный доступ через USB

                                Исследователи Positive Technologies активировали аппаратную отладку (JTAG) для Intel Management Engine, которая позволяет получить полный доступ ко всем устройствам PCH (Platform Controller Hub), используя технологию Intel DCI (через интерфейс USB). Мы планируем поделиться подробностями на одной из ближайших конференций. А о том, как активировать этот интерфейс, но для основного процессора, расскажем ниже.

                                Читать дальше →
                                • +57
                                • 28.3k
                                • 9
                              • Умный дом или игрушка для мужчин: контроль температур

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

                                  Контроль температур в загородном доме точно нужен тем, кто часто приезжает туда по выходным и праздникам. Также тем, кто не опускает там температуру ниже +5°C. А нужен ли он тем, кто постоянно там проживает или тем, у кого есть возможность поддержания там температуры в районе +20°C?

                                  На вопрос, нужен ли вам умный дом, часто получаешь ответ: у меня котел, температура постоянная, живу в доме постоянно, зачем мне умный дом?

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



                                  Читать дальше →
                                • Opensource контроллер умного дома на базе Arduino Mega 2560 с поддержкой MQTT, DMX-512, 1-Wire, Modbus и Openhab

                                  Сегодня я решился вынести на суд общественности проект, работу над которым вел на протяжении последней пары лет: «LightHub». То, что получилось в итоге, можно назвать, пожалуй, самым дешевым решением для создания Умного дома, которое, тем не менее, умеет:

                                  • Управлять освещением и силовыми устройствами(Реле, диммеры DMX-512 и Modbus RTU)
                                  • Управлять теплыми полами (в качестве термодатчиков используются полтора десятка дешевых DS18B20, разведенных по квартире)
                                  • Управлять задвижками вентиляции/кондиционера
                                  • Управлять самодельной системой приточной вентиляции.
                                  • Многое такого, о чем я изначально не задумывался, просто в силу того, что контроллер получился абсолютно открытым, гибко конфигурируемым, и прекрасно дополняющим Опенсорсные решения Openhab+Mosquitto+NodeRed

                                  На вход контроллера подключаются обычные выключатели, кнопки, контактные датчики, датчики протечки и пр. которые могут управлять как локальными нагрузками так и устройствами, подключенными к другим таким же контроллерам или ко всему, что понимает протокол MQTT. У меня, например, подключен геркон, установленный в коробке входной двери. Когда закрываю замок на три оборота — выключаются свет, теплые полы, бойлеры, AV ресивер. Когда возвращаюсь — состояние этих приборов восстанавливается как было до ухода.

                                  На выход — например, такие вот релейные модули, DMX, Modbus переферия.

                                  Контроллеры конфигурируются при помощи JSON файлов, которые при старте контроллера загружаются по http (далее, конфиг можно сохранить в NVRAM через Serial CLI). Ну и, конечно, все это управляется системой Openhab 2, через штатное мобильное приложение.
                                  Задачи «малой автоматизации» решены как при помощи штатных openhab rules (не очень удобных), так и при помощи NodeRed. (По поводу NodeRed вот статья, которая прекрасно описывает пример автоматизации.)

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