• Telegram сам добавляет чужие контакты? Это норма



      Пользуюсь Telegram не первый год. Всё хорошо, но вот какое-то время назад начала смущать одна странная деталь: время от времени Telegram самостоятельно добавлял в мои контакты неизвестных людей, сопровождая это уведомлением, что они зарегистрировались в Telegram. Вообще Telegram не должен показывать номера телефонов людей, которых нет в вашей телефонной книге, но для таких самопроизвольно появляющихся контактов я видел и номер телефона. Всё выглядело так, будто это контакты из моей телефонной книги. Но их там не было. Тогда я решил, что Telegram автоматически добавляет в мои контакты тех людей, которые добавили мой номер телефона в свою телефонную книгу. Поскольку мой номер телефона несколько лет назад был указан на одном небольшом сайте, я решил, что кто-то из немногочисленных посетителей зачем-то добавил меня в свои телефонные книги, и это какое-то время выглядело правдоподобно.
      Читать дальше →
    • Need For Speed III Modern Patch: более 100 изменений без исходных кодов

        imageКогда я впервые увидел Need For Speed III, от изумления я даже присел. Диск шёл в подарок к видеокарте моего первого компьютера, и это была первая трёхмерная игра в моей жизни. До этого момента я совершенно не подозревал, что графика в играх может быть настолько потрясающей. Это был далёкий 2000 год. Не счесть количество часов, потраченных на игру в сплитскрине за одной клавиатурой с моим двоюродным братом… Музыке — отдельное слово. Мне она настолько нравилась, что я даже записывал её на кассету, а с кассеты потом обратно на компьютер, при помощи стандартной «Звукозаписи». Это единственное что я тогда смог придумать. Слушал я эти записи по кругу по много часов подряд. MP3? Что это за странные буквы? Только WAV, только хардкор!

        И вот, годы спустя, мне захотелось сыграть в эту игру. Но она не заработала на современном железе. Пришлось разбираться. В процессе захотелось ещё и поддержку широкоформатных разрешений… и понеслась! Немного увлёкся этим делом, и в результате получился внушительный патч. Более 8000 строк на ассемблере, исписано 18 листов А4, огромный список изменений…
        Читать дальше →
      • Sound Keeper — предотвращает «засыпание» цифровых аудио-выходов SPDIF или HDMI

          Если вы когда-нибудь пользовались цифровыми аудио-выходами (SPDIF или HDMI), наверняка вы сталкивались с проблемой, когда во время тишины акустика «засыпала», после чего начало следующего звука обрезалось из-за того, что акустике нужно время на «пробуждение» и инициализацию после сна. Это сильно раздражает. Если у вас никогда не было такой проблемы — значит вам повезло с драйвером. Если же проблема имеет место — она решается непрерывным воспроизведением абсолютной тишины. Костыль, но это единственный доступный способ заставить драйвер не выключать цифровой аудио-выход.

          Ранее для этих целей существовала одна программа с названием SPDIF Keep Alive. Но на мой взгляд она слишком тяжёлая для решения такой простой задачи: требует наличия фреймворка .NET, расходует слишком много памяти и процессорного времени. Поэтому я написал на C++ новую программу для решения проблемы.

          Читать дальше →
        • В Miranda NG 0.95 появилась поддержка полноценных мета-контактов в ядре. Что дальше?

            Прошло уже почти 2 года, как основные разработчики Miranda IM перешли в форк Miranda NG. С тех пор Miranda IM практически не развивается, а вот Miranda NG медленно, но верно идёт вперёд. В начале 2014 года вышла версия 0.94 с поддержкой шифрования в ядре, а совсем недавно вышел релиз 0.95, где была реализована полноценная поддержка мета-контактов взамен костылю, который годами использовался ранее. Теперь у каждого контакта своя история, а у мета-контакта — общая история без дублирования записей в базе.
            Читать дальше →
          • Эмуляция Денди. Nestopia с поддержкой нового расширения ZNS (Zipped NES)

              Вам ничего не напоминает этот скриншот? Сомневаюсь. Китайские друзья постарались на славу — уверен, что большинство из вас сейчас вспоминает свой первый картридж для Денди. На картридже было несколько простых игр, которые приедались в первый же день. Но вы ведь помните это меню с красивыми видами на каждой странице, приятной музыкой и даже небольшим романтическим сюжетом? Да, черт возьми, вы помните! В Денди играл наверное каждый ребенок в этой стране. Мы часами просиживали за экранами телевизоров, меняли картриджи один за другим и нам было совсем не важно, что это какой-то пиратский клон японской NES, и тем более не интересно, почему в играх на наших картриджах затерты все копирайты. Кто-нибудь тогда вообще понимал что это такое? =)
              Сегодня совершенно нет необходимости покупать эту приставку, чтобы вспомнить все и заново пройти Super Mario или Contra. Существует армия эмуляторов на любой вкус и цвет, дампы практически всех игр давно доступны в сети. Каждый уважающий себя эмулятор умеет открывать игры прямо из архивов. Это очень удобно, ведь чаще всего дампы игр распространяются именно в сжатом виде. Только вот есть одна неприятность — связывать напрямую с программой расширение .zip достаточно глупо, а хотелось бы запускать игры из архивов одним кликом. Поэтому я предлагаю для сжатых NES файлов использовать расширение ZNS (Zipped NES).
              Читать дальше →
            • Избавляемся от www в адресе сайта

                Универсальное решение проблемы постоянных редиректов на домен без www при помощи mod_rewrite. Просто и полезно. Работает на любом домене без необходимости править для каждого сайта. Ранее на хабре видел подобное, но без независимости от доменного имени.
                В корень бросаем файл .htaccess со следующим содержимым:
                <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteBase /
                # В переменную окружения %{ENV:PROTOCOL} помещаем протокол
                RewriteRule ^(.*)$ - [E=PROTOCOL:http]
                RewriteCond %{HTTPS} ^on$ [NC]
                RewriteRule ^(.*)$ - [E=PROTOCOL:https]
                # Если нужно убираем www
                RewriteCond %{SERVER_PORT} ^80$
                RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
                RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]
                RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
                RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]
                </IfModule>