• Git happens! 6 типичных ошибок Git и как их исправить

    • Translation


    Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

    Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
    Читать дальше →
  • [в закладки] Шпаргалка системного администратора по сетевым инструментам Linux

    • Translation
    В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.



    В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением <fqdn> (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com.
    Читать дальше →
  • Нехватка оперативной памяти в Linux на рабочем ПК: оптимизация и действия при зависании

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

        Немного занимаюсь рисованием, и вот купил себе Huion Q11K — качество на уровне такого же Интоуса Про, но ценник ниже чуть ли не в 3 раза. Подключил, порисовал даже, на Windows 10 всё работает. Перезагрузился в линукс, и началось…

        image
        Читать дальше →
      • Подключаем «отечественный» LCD 16x2 MT-16S2S по SPI



          Тенденция импортозамещения подтолкнула протестировать символьный LCD индикатор от фирмы МЭЛТ. Мы взяли МТ-16S2S на ST7070. В некотором роде это аналог широко известного WH-1602 на 44780. А еще он поддерживает SPI-режим.

          МЭЛТ кроме того собирает дисплеи и на отечественном контроллере КБ1013ВГ6 от Интеграла. У него есть отличие в в работе в 4-битном режиме от ставшего уже стандартом 44780.
          Читать дальше →
        • Оптимизация кода: память

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

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

            image

            Иерархия памяти работает, потому что хорошо написанные программы имеют тенденцию обращаться к хранилищу на каком-то конкретном уровне более часто, чем к хранилищу на более низком уровне. Так что хранилище на более низком уровне может быть медленнее, больше и дешевле. В итоге мы получаем большой объём памяти, который имеет стоимость хранилища в самом низу иерархии, но доставляет данные программе со скоростью быстрого хранилища в самом верху иерархии.
            Читать дальше →
          • Оптимизация кода: процессор

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

            image

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

              Кажется, не проходит и дня, чтобы на Хабре не появлялись посты о нейронных сетях. Они сделали машинное обучение доступным не только большим компаниям, но и любому человеку, который умеет программировать. Несмотря на то, что всем кажется, будто о нейросетях уже всем все известно, мы решили поделиться обзорной лекцией, прочитанной в рамках Малого ШАДа, рассчитанного на старшеклассников с сильной математической подготовкой.

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



              Константин klakhman Лахман закончил МИФИ, работал исследователем в отделе нейронаук НИЦ «Курчатовский институт». В Яндексе занимается нейросетевыми технологиями, используемыми в компьютерном зрении.

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




                Мы собрали интересные лекции, которые помогут понять, как работает машинное обучение, какие задачи решает и что нам в ближайшем будущем ждать от машин, умеющих учиться. Первая лекция рассчитана скорее на тех, кто вообще не понимает, как работает machine learning, в остальных много интересных кейсов.
                Читать дальше →
                • +43
                • 79.5k
                • 5
              • Нововведения языка SystemVerilog

                image

                В данной статье показаны некоторые нововведения языка SystemVerilog в области организации данных по сравнению с Verilog-2001 для синтезируемого подмножества языка.

                История SystemVerilog довольна длина и туманна. Начавшись после принятия стандарта Verilog-95, она вылелась в Verilog-2001. Однако язык не слишком подходил для верификации, инженеры использовании языки семейства «E» — VERA, Testbuider. В современном виде SystemVerilog появился после 2005 года. Сейчас средства синтеза и моделирование такие как Quartus II, ISE, ModelSim/QuestaSim уверенно поддерживают SystemVerilog. Стандарт называется IEEE 1800-2012.

                Прим. Эта статья давно написана, но не опубликована. Надеюсь будет полезна начинающим.
                Читать дальше →
                • +19
                • 11.6k
                • 9
              • Полупроводниковая электроника

                • Tutorial


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



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





                Иллюстраций: 34, символов: 51 609.



                Читать дальше →
              • 7 правил написания программ, которые не умрут вместе с вами

                • Translation
                Ваши программы – это ваше наследие. Решайте сами, как долго оно будет существовать.

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

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

                Что можно получить, выдавая хороший код? Разве не имеет права на жизнь подход в обучении под названием «двигайся быстрее, ломая всё на своём пути?» Нет. Обучиться писать код – это навык, это доступно каждому. Обучиться писать хороший код – это искусство. Это требует усилий, времени и целеустремлённости.
                Читать дальше →
              • Хороших книг пост



                  А давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
                  Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
                  Читать дальше →
                • Кратко о гидродинамике: теория устойчивости

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

                    В тексте будет написано ещё немножечко теории на примере задачи об устойчивости течения в плоском канале. Таких задач в реальности великое множество — в слоях и в ограниченных полостях разной формы, в слоях вертикальных, горизонтальных и наклонных, в обычной жидкости и пористой среде, в проводящей жидкости под влиянием магнитного поля и в растворе какой-нибудь соли под действием температуры, в полости под влиянием как угодно направленной вибрации, на границе раздела двух жидкостей… В общем, одно только перечисление всех подуровней гидродинамики может отнять пару часов, и то всё вспомнить вряд ли удастся. А также будет показано несколько примеров чисто гидродинамической неустойчивости течений, без влияния дополнительных факторов (изображения около 700 кбайт).

                    Предыдущие же посты были написаны, чтобы обеспечить математический и смысловой фундамент формул в дальнейших постах.

                    Кратко о гидродинамике: ты помнишь, как всё начиналось?
                    Кратко о гидродинамике: уравнения движения
                    Кратко о гидродинамике: сохранение энергии

                    Задачи об устойчивости и примеры неустойчивостей в картинках
                  • Контрольное голосование за 121 лучшую игру по версии Хабра (2013 г.)


                      После поста "Коллективный разум ХабраХабра выбрал лучшие игры всех времен и народов на 2013 год" возникло много споров: можно ли считать позиции игр объективными? И правда, игры, упомянутые в комментария раньше других, в основном и набирали больше голосов. Этому есть несколько очевидных причин, и что это действительно так можно видеть из графика, составленного по данным от Athari:image
                      Читать дальше →
                    • Лучшие компьютерные игры всех времен и народов по версии хабрасообщества 2013 года



                        Данный пост − попытка определить лучшие компьютерные игры всех времен и народов. Конечно, по версии нашего хабрасообщества. Ну и, разумеется, с годами предпочтения меняются, поэтому версия 2013 года.

                        Правила простые: в комментариях первого уровня хабраюзер пишет название любимой игры. Разрешается добавить небольшую картинку (высотой до 100 пикселей). Разрешается сделать небольшое описание, строчки на две, лучше со ссылкой на ресурс, где игра хорошо описана. В комментарий второго уровня к играм просьба добавлять интересные факты об игре, что должно прибавить плюсов.

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

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

                        Мы построим свой музей компьютерных игр, Юзернейм!
                        Читать дальше →
                      • Создание API: в рамку и на стену

                        • Translation
                        • Tutorial
                        Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

                        API — это большая сила и большая ответственность. У хорошего API будут благодарные пользователи; поддержка плохого превратится в кошмар.

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

                        API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

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

                        Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

                        Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
                        Читать дальше →
                      • Как сделать что-либо, когда не хочется — а надо

                          Ужасно не люблю выражение «заставить себя». По моему убеждению, нельзя заставить себя — с собой можно только договориться. Ну, или обмануть — но это не лучший выход.
                          Итак, как договориться с собой сделать что-то, что совершенно явно не хочется делать? И настолько же явно необходимо.
                          Некоторое время назад я прочёл в блоге психолога Хайди Халворсон о трёх простых причинах, которые мешают нам что-то делать, и таких же (ну, почти) простых решениях этих проблем. И поскольку время показало, что решения (по крайней мере, мне) подходят — спешу поделиться ими.

                          Итак, почему же дедлайн близится, а решения всё нет?
                          Читать дальше →
                        • Практика IPv6 — домашняя сеть

                          • Tutorial
                          Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.

                          Зачем IPv6?


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

                          Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.

                          Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.

                          Структура сети:

                          (Оригиналы картинок: github.com/amarao/dia_schemes)
                          • 1, 2, 3 — устройства в локальной сети, работают по WiFi
                          • 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
                          • 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
                          • 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
                          • 7 — eth2, интерфейс подключения к сети Tiera

                          Читать дальше →
                        • Много бесплатных книг по программированию

                          • Translation
                          image

                          Списки книг




                          Программирование графики


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