Пользователь
Вред маленьких функций
![](https://habrastorage.org/webt/oq/fx/es/oqfxesvv4zg0w71crzo7zzzoukg.jpeg)
Перевод статьи Синди Шридхаран.
В этой статье автор собирается:
- Пролить свет на некоторые предполагаемые преимущества маленьких функций.
- Объяснить, почему некоторые из преимуществ вовсе не такие радужные, как рекламируется.
- Объяснить, почему маленькие функции иногда контрпродуктивны.
- Объяснить, в каких случаях маленькие функции действительно полезны.
30 новых ресурсов для android-разработчика (лето 2017)
![image](https://habrastorage.org/getpro/habr/post_images/b7f/889/a4a/b7f889a4aa46308e6a1a570a18b78cbb.jpg)
Компания EDISON Software профессионально занимается разработкой Android-приложений. Вот некоторые крупные проекты:
- Мобильные приложения виртуального сотового оператора
- Бронирование билетов на мероприятия
- Сервис доставки банковских уведомлений на смартфоны
- Приложение Vivaldi для работы с электронной библиотекой
Полезные статьи на Хабре по Android:
- Разработка быстрых мобильных приложений на Android. Часть первая
- Разработка быстрых мобильных приложений на Android. Часть вторая
- Шишки и грабли Android-разработчика за 2 года
(Пост из серии «просмотреть и добавить в избранное»)
Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec
Итак, у нас есть статический публичный IP адрес, который приходит Ethernet шнуром в MikroTik RouterBOARD 750G r3 (hEX). Пробуем собрать вот такую конструкцию.
![](https://habrastorage.org/web/e99/ec4/601/e99ec46016d6403299b05d35cbadb71f.png)
Настройку L2tp линка в рамках этой статьи я не описываю, а на схеме он нарисован только потому, что в ней упоминается.
Ускоряем std::shared_mutex в 10 раз
Далее мы покажем как ускорить работу contfree_safe_ptr<std::map> до уровня сложных и оптимизированных lock-free структур данных аналогичных по функциональности std::map<>, например: SkipListMap и BronsonAVLTreeMap из библиотеки libCDS (Concurrent Data Structures library): github.com/khizmax/libcds
И такую многопоточную производительность мы сможем получить для любого вашего изначально потоко-небезопасного класса T используемого как contfree_safe_ptr<T>. Нас интересуют оптимизации повышающие производительность на ~1000%, поэтому мы не будем уделять внимание слабым и сомнительным оптимизациям.
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Существует два распространенных типа подключения DPI: пассивный и активный.
Пассивный DPI
Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.Прокачиваем NES Classic Mini — продолжение
![image](http://www.nintendo.com/images/page/nes-classic/nes-classic-edition.png)
Сегодня я напишу продолжение этой истории, ведь за полгода мы добились гораздо более существенного прогресса в этом деле.
Как обычно, под катом моё повествование и в современной видеоформе, и в виде традиционной статьи.
ТОП-9 YouTube-каналов для изучения английского языка
// "Enjoy the Content" — from author with Love
Как делают печатные платы: экскурсия на завод Технотех
![image](https://habrastorage.org/getpro/habr/post_images/738/31e/364/73831e36439899e35ac55e8ce1ab42f4.jpg)
Итак, как же все-таки делают печатные платы для наших любимых гаджетов?
Модель Акторов и C++: что, зачем и как?
Данная статья является доработанной текстовой версией одноименного доклада с конференции C++ CoreHard Autumn 2016, которая проходила в Минске в октябре прошлого года. Желание сделать эту статью возникло под впечатлением о том, что в мире C++ разработчики как бы делятся на два больших и не пересекающихся лагеря. В первом лагере находятся матерые спецы, которые все видели, все знают и все умеют, за плечами у которых десятки собственноручно написанных реализаций Модели Акторов, внутрях у которых хитрые, конечно же самостоятельно сделанные, lock-free очереди и state-of-the-art механизмы обслуживания сообщений. Такие проффи сами часами могут рассказывать про тонкости многопоточного программирования (только почему-то редко это делают). Во втором лагере — зеленые новички, которых волею судьбы занесло в мир C++, которые пока слабо представляют себе различия между unique_ptr и shared_ptr, про шаблоны только слышали, а в области многопоточности имеют поверхностное впечатление только о std::thread, std::mutex и, может быть, std::condition_variable. Для людей из первого лагеря я вряд ли что-нибудь интересное расскажу, а вот разработчикам из второго лагеря попробую вкратце рассказать о том, что Модель Акторов в C++ — это нормально. И что есть ряд готовых инструментов, на примере которых можно увидеть, что же это такое.
Реверс-инжиниринг сообщений Protocol Buffers
Удаленная переустановка Linux по ssh без доступа к консоли
Создание зашифрованной флешки Kali Linux Encrypted Persistence
1. Создание загрузочной флешки
Для записи образа используйте программу Rufus. Выберите устройство, на которое будет распакован образ, далее выберите iso-образ системы и из выпадающего списка выберите DD-образ.
![image](https://habrastorage.org/getpro/habr/post_images/00c/86a/7ec/00c86a7ecc731d3d5db7488429a33abd.jpg)
После развертывания образа структура разделов флешки примет следующий вид:
![image](https://habrastorage.org/getpro/habr/post_images/724/af3/ab7/724af3ab784992c3cd0935aab24db6d7.jpg)
Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik
Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
Mikrotik: VLAN с использованием чипа коммутации
Универсальный метод обхода запрета Yota раздавать интернет с телефона или собираем модуль ядра Android
Старые методы и их недостатки
Я думаю, никому уже не интересно читать во второй раз (а может быть и в третий), о том, как Yota определяет, пользуется ли человек телефоном в режиме модема или точки доступа. «Зачем нам ещё одна статья?» — спросите вы.
Дело в том, что методы обхода, приведённые по ссылкам, не позволяют настроить телефон таким образом, чтобы позже при подключении любых устройств не потребовалось ничего настраивать заново. Кроме того, пользователь будет испытывать серьёзные неудобства, если он подключает несколько устройств с разными TTL. Придётся как минимум менять TTL на одном из них.
Именно эти причины мотивировали меня копать дальше в поисках ответа на вечный вопрос «Как же всё-таки нахаляву раздать интернет всему офису?». И найти такой ответ удалось (только для android, у меня нет яблока).
Двенадцать полезных Chrome DevTools Tips
Некоторые из DevTools функций вы возможно не знали. Я буду очень счастлив, если хотя бы одну из них вы найдете для себя полезной.
(В статье ниже присутствуют анимированные гифги, которые начинают раздражать после первого цикла. Поэтому я советую открыть dev tools и удалить DOM ноды, которые отвечают за изображения.)
Итак, поехали:
Копируем переменную в буфер обмена
Об этой возможности я узнал из комментариев, и считаю ее достаточно полезной чтобы быть описанной в начале. Иногда бывает нужно скопировать содержимое переменной в буфер обмена. Например html код или json объект. Для этого можно использовать copy функцию.
copy (someVariable)
Теперь текстовое представление переменной скопировано в буфер обмена.
Прощай, роуминг — здравствуй, СwSim
![](https://habrastorage.org/files/387/200/bff/387200bff3a049f9983448d66023d76c.jpg)
Подарок на 1 сентября всем поклонникам цифровой схемотехники и архитектуры компьютера
![hh2e_lecture_slides_banner_3](https://habrastorage.org/getpro/habr/post_images/a4b/a82/228/a4ba8222892cc10c4960d89491c017da.png)
Господа! Сегодня на 1 сентября, в День Знаний, группа из украинских преподавателей вузов, их аспиранток, а также российских инженеров, решили, по согласованию с британскими издателями Elsevier через компанию Imagination Technologies, сделать небольшой подарок всем учителям компьютерной архитектуры и цифровой схемотехники, особенно тем, которые используют популярный учебник Дэвида Харриса и Сары Харрис.
Просто нажмите вот на эту ссылку и вы получите zip-файл с слайдами для чтения лекций по этому учебнику на русском языке. Причем без регистрации, которая требуется для загрузки учебника как такового.
Слайды могут быть полезны не только учителям, но и любым интересующимся, кто хочет узнать, как своими руками построить микропроцессор, но не хочет пробиваться через 1600 планшетных страниц книги.
Итого, вырезка из слайдов, чтобы вы поняли, о чем идет речь:
Новая редакция популярного бесплатного учебника электроники, архитектуры компьютера и низкоуровневого программирования
![silicon_russia_ad_selected_160730_174932](https://habrastorage.org/getpro/habr/post_images/a60/5eb/1ad/a605eb1adb1fc1faf8c037ea030d2803.jpg)
Книжка содержит «введение во все», доступное способному школьнику или младшему студенту, который после ее прочтения может спроектировать, написать на SystemVerilog или VHDL и реализовать на ПЛИС несложный, но при этом совершенно настоящий конвейерный процессор. Книга написана живым языком и для введения концепций, например конечных автоматов, использует примеры типа:
![](https://habrastorage.org/getpro/habr/post_images/ecc/746/5a5/ecc7465a571a2dfbdcd56092273f57eb.png)
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность