Как стать автором
Обновить
47
0

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

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

Взлом английского. Язык и реальность

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

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

Система, описанная в статье, перевернет ваше представление об изучении языков. Я на это надеюсь. Но это случиться только если не спешить, читать внимательно и вдумчиво и связывать все тезисы между собой. Используйте систему 2 на полную катушку.

Взять красную таблетку
Всего голосов 37: ↑22 и ↓15+7
Комментарии81

Домашний хостинг сайтов с динамическим IP

Время на прочтение6 мин
Количество просмотров147K
У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

Сайты практически не приносят прибыли, поскольку это какие-то старые работы (по разным причинам не пошедшие в продакшн), домашняя страница, сайт заведенный красивой почты и тому подобное. Но в то же время эти сайты жалко бросать, а потому приходится каждый месяц на них тратить вполне реальные деньги чтобы покупать хостинг. Деньги, прямо скажем небольшие, но тем не менее их жалко, поскольку отдачи от сайтов никакой нет.

В то-же время в наличии имеется:

  • Домашний сервер на Ubuntu
  • Быстрый ethernet-интернет от МТС

Но не имеется ключевого — статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
Читать дальше →
Всего голосов 57: ↑44 и ↓13+31
Комментарии92

История 3dfx Voodoo1

Время на прочтение10 мин
Количество просмотров29K
image

Это вторая статья из серии «3D-карты конца 90-х, на которых работал Quake». В первой части мы рассмотрели Rendition Vérité 1000 конца 1996 года и специальный порт игры для неё под названием vQuake. Rendition удалось победить всех на рынке Quake. На короткий промежуток времени она оставалась единственной платой, способной запускать блокбастер id Software с аппаратным ускорением.

Но всё изменилось в январе 1997 года, когда id Software выпустила новую версию Quake под названием GLQuake. Так как порт был создан с помощью miniGL (подмножества стандарта OpenGL 1.1), любой производитель аппаратных ускорителей мог написать драйвера miniGL и принять участие в гонке 3D-карт. С этого момента возможность конкуренции была открыта каждому. Цель заключалась в генерации как можно большего количества кадров в секунду. Наградой была слава и деньги покупателей. Вкратце изучив историю, можно понять, что два авторитета того времени без сомнений считали царями горы двух производителей.

Пока что в этом нет никаких сомнений: миром Quake правит Voodoo. А так как Quake правит миром игр, то покупка 3Dfx Voodoo почти неизбежна для геймеров.

— Tom's Hardware, 30 ноября 1997 года

3DFX Voodoo 1
— Эталон, по которому меряются все остальные карты.

— Файл .plan Джона Кармака. 12 февраля 1998 года[2]

Только взглянув на спецификации[3], в которых заявлялось о скорости заполнения в 50 мегапикселей/с, я сразу же захотел изучить эту карту и понять, что же сделала 3dfx, чтобы создать настолько мощный продукт.
Читать дальше →
Всего голосов 75: ↑74 и ↓1+73
Комментарии89

Как я использую AirDrop вместо Тиндера

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


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

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

Под катом я расскажу за всю хурму.
Компания RUVDS.COM не несёт ответственности за повторение действий описанных в данном материале.
Читать дальше →
Всего голосов 308: ↑294 и ↓14+280
Комментарии174

Нетбуки: забытый временем форм-фактор

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


Давным-давно, ещё до того, как смартфоны стали популярными, а детей в ресторанах удалось угомонить при помощи ужасных игр на iPad, был такой прекрасный период времени. Период, когда пользователь мог купить за приемлемую цену компьютер на базе х86 в компактной, портативной оболочке. В 2007 году родился нетбук, и взял штурмом весь мир – только чтобы потом внезапно исчезнуть через несколько лет. Чего такого классного было в нетбуках, и куда они делись?

Превосходная комбинация



Asus EEE под управлением Linux. На них можно было запускать всё, что угодно! Это были реальные, полноценные компьютеры. Никаких залоченных чипсетов или BIOS. Чистое, честное веселье с х86.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии225

Печать и воспроизведение звука на бумаге

Время на прочтение3 мин
Количество просмотров102K
Можно ли закодировать звук в виде изображения, которое считывается камерой и проигрывается в реальном времени?

На ум сразу приходит QR-код или некие его аналоги. В такой код можно записать ссылку на mp3, или даже совсем маленький звуковой файл. Но в первом случае требуется выход в сеть, а во втором — большая плотность кода и повышенные требования к качеству изображения. Кроме того, ни тот ни другой способ не обеспечит мгновенное воспроизведение.

Что, если кодировать звук не в цифровом, а в аналоговом формате? То есть, допустить возможность больших потерь информации с сохранением основных «очертаний» звукового послания. Например, такие потери возникнут при плохом освещении, плохой камере, маленькой картинке, мятой или рваной бумаге с кодом. Пусть со страшными артефактами, но картинка должна звучать.


Читать дальше →
Всего голосов 207: ↑204 и ↓3+201
Комментарии124

Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство

Время на прочтение9 мин
Количество просмотров290K
2,4 ГГц — это плохо. 5 ГГц — это хорошо. 6 ГГц — это ещё лучше, но послезавтра. Все это знают, кого я тут учу, в самом деле. Всё это хорошо, только делать-то что, когда ты такой, как умный, открываешь какой-нибудь Wi-Fi Explorer, а там сатанизм и этажерки, как на скриншоте?



Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
Когда это нас останавливало?
Всего голосов 111: ↑110 и ↓1+109
Комментарии234

Долой циклы, или Неленивая композиция алгоритмов в C++

Время на прочтение9 мин
Количество просмотров18K
"Кто ни разу не ошибался в индексировании цикла, пусть первый бросит в деструкторе исключение."

— Древняя мудрость

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


В конце концов, это просто некрасиво.


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


Данная работа ставит своей целью пролить свет на отнюдь не новую, но пока что не слишком распространённую идею, которая вполне способна произвести очередной прорыв в области написания программ на языке C++.


Так как же писать красивый, понятный, эффективный код, а также иметь возможность параллелить большие вычисления лёгким движением пальцев по клавиатуре?

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии47

Что делать, если к твоему хостеру пришли siloviki

Время на прочтение8 мин
Количество просмотров52K
кдпв — Reuters

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

Вы очень не хотите, чтобы логи вашего веб-сервера или данные пользователей попали кому-то еще. Идеальную защиту построить не получится. Защититься от хостера, который владеет гипервизором и предоставляет вам виртуальную машину почти невозможно. Но, возможно, получится немного снизить риски. Шифрование арендованных машин не так бесполезно как кажется на первый взгляд. Заодно посмотрим на угрозы извлечения данных из физических серверов.
Всего голосов 89: ↑87 и ↓2+85
Комментарии141

Переезд в Иннополис

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


В 2017 году мы с семьёй переехали в Иннополис.

За 3 года жизни эйфория прошла и сформировалось какое-то устойчивое мнение об этом городе.

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

Меня никто не просил писать эту статью и тем более не платил за неё. В общем, это не заказная «приезжайте к нам, у нас тут классно». Пишу всё так, как вижу своими глазами.
Читать дальше →
Всего голосов 212: ↑206 и ↓6+200
Комментарии480

Я есть root. Разбираемся в повышении привилегий ОS Linux

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

Первый квартал 2020 года я провел за подготовкой к экзамену OSCP. Поиск информации в Google и множество «слепых» попыток отнимали у меня все свободное время. Особенно непросто оказалось разобраться в механизмах повышения привилегий. Курс PWK уделяет этой теме большое внимание, однако методических материалов всегда недостаточно. В Интернете есть куча мануалов с полезными командами, но я не сторонник слепого следования рекомендациям без понимания, к чему это приведет.


Мне хочется поделиться с вами тем, что удалось узнать за время подготовки и успешной сдачи экзамена (включая периодические набеги на Hack The Box). Я испытывал сильнейшее ощущение благодарности к каждой крупице информации, которая помогала мне пройти путь Try Harder более осознанно, сейчас мое время отдать должное комьюнити.


Я хочу дать вам мануал по повышению привилегий в OS Linux, включающий в себя разбор наиболее частых векторов и смежных фишек, которые вам обязательно пригодятся. Зачастую сами механизмы повышения привилегий достаточно несложные, трудности возникают при структурировании и анализе информации. Поэтому я решил начать с «обзорной экскурсии» и далее рассматривать каждый вектор в отдельной статье. Надеюсь, я сэкономлю вам время на изучение темы.


Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии26

Ностальгии пост: j2me, Gravity Defied, 64kb

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

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



  • Если что, я не имею к этой игре никакого отношения.

Например, игра с картинки выше не использовала floating-point числа, так как не все телефоны их поддерживали. "3д" и физика — полностью самописные на fixed-point вычислениях поверх целых чисел. Но мне кажется, перечисление особенностей одного приложения будет не сильно информативным. Для полноты картины я немного затрону возможности телефонов, j2me платформу и заодно сравню это с современной разработкой под Android.


Кроме того, j2me — это полноценная java старой версии (кажется, 1.3), я дописал некоторые недостающие классы и смог запустить .jar файлик с игрой на своём PC. Скриншот выше — оттуда. Не скажу, что от этого есть какая-то польза — просто API для j2me было очень простым и мне захотелось попробовать.

Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии47

Пишем операционную систему. Часть 1. Загрузчик

Время на прочтение3 мин
Количество просмотров42K
Всем привет! Сегодня мы напишем загрузчик, который будет выводить «Hello World» и запустим его на VirtualBox. Писать будем на ассемблере FASM. Скачать его можно отсюда. Также нам понадобится собственно VirtualBox и UltraISO. Перед тем как писать код, разберемся как загружаются операционные системы.

Итак, когда мы нажимаем большую кнопку включения на нашем компьютере запускается система, которая есть на любом компьютере — BIOS (Basic Input/Output System или базовая система ввода/вывода). Задача BIOS это:

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

5 экспериментов с WiFi на ESP32

Время на прочтение11 мин
Количество просмотров103K
Привет Хабр.

Платы ESP32 весьма популярны в виду низкой цены, неплохой вычислительной мощности (процессор 200МГц), развитого SDK с поддержкой как MicroPython так и Arduino IDE, наличием GPIO c поддержкой периферии (SPI, I2C и пр) и беспроводной связи (WiFi, Bluetooth). Сегодня мы посмотрим, что можно сделать на такой плате ценой всего лишь около 12$.



Мы рассмотрим разные варианты использования WiFi, от простого коннекта к сети до WiFi-сниффера. Для тестов понадобится любая плата с ESP32 (лучше с OLED-экраном, как на картинке) и Arduino IDE.

Для тех кому интересно как это работает, продолжение под катом.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии43

Ни х** нету или секреты перевода на русский язык facebook

Время на прочтение1 мин
Количество просмотров3.2K
Добрый пятничный вечер, уважаемые пользователи Хабра!

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

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

image

Интересно, что еще нас ждет на просторах facebook :)
Всего голосов 268: ↑238 и ↓30+208
Комментарии108

Вся правда о целочисленных типах в C

Время на прочтение3 мин
Количество просмотров138K
Для начала несколько вопросов:

  1. Тип char по умолчанию знаковый или нет? А int?
  2. Законно ли неявное приведение (signed char *) к (char *)? А то же для int?
  3. Сколько бит в unsigned char?
  4. Какое максимальное число гарантированно можно поместить в int? А минимальное?
  5. Тип long определённо больше, чем char, не так ли?

Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере1) — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).

Если вы уверенно сможете правильно ответить на эти вопросы, тогда эта статья не для вас. В противном случае десять минут, потраченные на её чтение, будут весьма полезны.

Предположу, что вы ответили
  1. Знаковые оба.
  2. Законны оба.
  3. 8.
  4. 2147483647. -2147483648.
  5. Конечно, Кэп.


А правильные ответы такие
  1. char — не регламентируется, int — знаковый.
  2. Для int — законно, а для char — нет.
  3. Не менее 8.
  4. 32767. -32767
  5. Вообще говоря, нет.



Читать дальше →
Всего голосов 74: ↑69 и ↓5+64
Комментарии54

Настраиваем удобную сборку проектов в Visual Studio

Время на прочтение43 мин
Количество просмотров81K
Эта статья является руководством по настройке сборки C++ проектов Visual Studio. Частично она сводилась из материалов разрозненных статей на эту тему, частично является результатом реверс-инжениринга стандартных конфигурационных файлов Студии. Я написал ее в основном потому что полезность документации от самой Microsoft на эту тему стремится к нулю и мне хотелось иметь под рукой удобный референс к которому в дальнейшем можно будет обращаться и отсылать других разработчиков. Visual Studio имеет удобные и широкие возможности для настройки по-настоящему удобной работы со сложными проектами и мне досадно видеть что из-за отвратительной документации эти возможности очень редко сейчас используются.

В качестве примера попробуем сделать так чтобы в Студию можно было добавлять flatbuffer schema, а Студия автоматически вызывала flatc в тех случаях когда это нужно (и не вызывала — когда изменений не было) и позволяла задавать настройки напрямую через File Properties



Укрощаем MSBuild
Всего голосов 42: ↑39 и ↓3+36
Комментарии37

Лучшее время для релиза пет-проекта

Время на прочтение2 мин
Количество просмотров7.6K
Каждый разработчик делал пет-проект, который так и не увидел свет. У меня таких проектов набралась чёртова дюжина, а на этой неделе я был близок к тому, чтобы пополнить список неудач ещё одним, но релиз всё-таки состоялся. В этом посте поделюсь результатами рефлексии и в конце отвечу на вопрос, когда же стоит выпускать первый релиз пет-проекта.
Читать дальше →
Всего голосов 24: ↑18 и ↓6+12
Комментарии59

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Всего голосов 621: ↑612 и ↓9+603
Комментарии109

Как ускорить код-ревью

Время на прочтение3 мин
Количество просмотров5K
Неграмотно поставленные код-ревью серьёзно замедляют рабочий процесс. Когда большое количество изменений застревает на несколько дней (или недель!), то выход продукта на рынок придётся отложить. Вот несколько причин, почему такое происходит:

  • Отсутствует стандарт оформления кода
  • Не используются автоматизированные проверки
  • Программисты не выполняют самостоятельный анализ своего кода
  • Огромные пул-реквесты
  • Расплывчатые пул-реквесты
  • Отсутствуют дедлайны для код-ревью
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии26

Информация

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