Что может помешать разработчику самостоятельно создать успешное приложение
Четыре года назад я опубликовал своё первое приложение в Google Play Store. И по ходу разработки я наткнулся на множество препятствий, но также и...
Извините, но мы не можем воскресить вас
Мы не можем загрузить ваш мозг в компьютер, потому что вы ни в малейшей степени не определяетесь связями между вашими нейронами.
3 основных закона разработки ПО
Чтобы стать инженером-программистом, требуются годы обучения. Однако основные принципы, на которых базируется подход к разработке программного обеспечения, можно свести к 3 фундаментальным законам.
Перестаньте фокусироваться на синтаксисе, если хотите стать senior-разработчиком
Вы переезжаете в новый город и не знаете, где находится ближайший продуктовый магазин.
Вы не станете волноваться, а просто воспользуетесь Google Maps.
После того, как вы...
Как удалять локальные ветки с помощью псевдонимов Git
Мы не из тех, кто упускает отличные возможности улучшить рабочие процессы Git! В данном руководстве учимся создавать псевдонимы Git и с их помощью удалять локальные ветки.
2 инструмента для автоматизации тестирования производительности на стороне клиента
Представляем 2 продвинутых инструмента веб-тестирования: Lighthouse от Google и Playwright от Microsoft. Освоив их, вы избавитесь от многих проблем, связанных с тестированием приложений, и этот процесс станет намного удобнее, быстрее и легче.
4 надежных веб-сайта на страже времени разработчика
Перечень полезных сайтов, которые помогут сэкономить время на начальных этапах создания проектов: Hidden tools, Can I use, Dev Hints и Bundle Phobia.
8 советов, как стать лучше во фронтенд-разработке
Должен ли я планировать свой проект или лучше сразу погрузиться в процесс разработки? Стоит ли мне внедрить вот этот плагин или вон ту библиотеку?...
Первые шаги в программировании: работа без ошибок
Овладение искусством написания кода может стать неоценимым вкладом в ваше будущее, так как этот профессиональный навык востребован в современном мире как никогда раньше. Именно...
Секрет быстрого обучения
Многие молодые разработчики боятся выглядеть глупо. Они уверены, что это преуменьшает их способности в глазах других и отрицательно влияет на их карьеру.
Однако все наоборот....
Эволюция серверной архитектуры: n-слойная, DDD, шестиугольная, луковичная, чистая
Проследим историю основных архитектур с их отличиями. Как код разделялся на слои и отчего рыдают и плачут миллионы разработчиков по всему миру?
Куча советов по программированию, которые я дал бы себе сам после 15 лет опыта
Маркус Баффетт — известный на HackerNews автор конструктора шахматного репертуара напоминает: «Изучайте Ваш инструмент, почти всегда оно того стоит». А ещё бойтесь писать код, который можно быстро поправить, если ошибки не критичны. В конце поста автор делится идеями ускорения отладки, которые уже работают на Chessbook и могут стать полезными для Вас.
Чистота и порядок: 3 правила для идеальной базы кода
В любом деле важен порядок, особенно если речь идет о чистоте кодовой базы. Рассмотрим 3 правила, выполнение которых помогает своевременно обнаружить грязный код и помешать его проникновению в базу.
Обработка сигналов в операционных системах семейства Unix на Golang
Сигналы в операционных системах семейства Unix — это программные прерывания, которые отправляются программе для указания на возникновение какого-то важного события. Это могут быть разные...
GitHub Actions и Vercel — быстрое развертывание проектов
На практическом примере научимся настраивать GitHub Actions для развертывания проекта на Vercel.
Как мне не удалось совладать с устаревшим кодом
Я очень хорошо помню свой первый опыт работы с устаревшим кодом. Я была младшим разработчиком и совершенно не представляла, что делаю.
Само приложение было чем-то...
Ленивая загрузка, агрегирование и CQRS
Рассмотрим шаблоны, позволяющие справляться с приложениями, у которых повышается сложность, и поймем, в каких случаях пригодится каждый из них.
Программное обеспечение без конструкции if-else
Не откладывая в долгий ящик скажу: зачастую конструкция if-else — плохой выбор. Её использование приводит к сложным конструкциям, снижает читаемость кода и усложняет рефакторинг.
Тем не...
Как создать бота в стиле Alexa и Siri с помощью Python и OpenAI
Хотите создать голосового ИИ-помощника наподобие Alexa и Siri? Предлагаем пошаговое руководство по разработке виртуального ассистента, воспринимающего человеческую речь и отвечающего на вопросы.
Вас неправильно учили объектно-ориентированному программированию
Да, ваши преподаватели, скорее всего, сформировали у вас неверное представление об объектно-ориентированном программировании. Предлагаем поразмышлять о причинах и последствиях такого недообучения, а также о недооцененных преимуществах ООП.
Портрет плохого программиста
Первым шагом на пути к становлению профессионального программиста может стать выявление плохих привычек в процессе написания кода. Рассмотрим их подробнее.
Я могу назвать себя «экспертом по ИИ», а вы?
Страшилки об искусственном интеллекте заполонили интернет. Но кому следует их бояться? Тем, кто создает модели ИИ, новые алгоритмы, сайты и приложения на основе ИИ, или тем, кто только использует все это? Пока еще искусственный интеллект не захватил наш мир, определитесь, кто вы - созидатель или потребитель.
Как галлюцинируют нейросети
Как заставить нейросеть галлюцинировать? Какие развлекательные и практические задачи при помощи этого можно решить? Знакомимся с разработанным Google алгоритмом - DeepDream.
Почему трудно писать полезные библиотеки
Легко представить, как выглядит полезный продукт, гораздо сложнее его произвести. Вот почему стоит поговорить о том, как создаются полезные библиотеки, которых, к сожалению, не так много, как хотелось бы.
Что нужно знать разработчику ПО
Инженер ПО - востребованная и высокооплачиваемая профессия, требующая креативности, аналитических навыков и интереса к информатике. Если вы самостоятельно изучаете программирование и интересуетесь основными принципами, применяемыми разработчиками ПО, то обратите внимание на эти 10 пунктов.
Три нашумевших диаграммы. Исследование JavaScript в 2018
Вы думали статистика и графики — это скука? Подумайте ещё раз…
Нашумевший — это буквально самое заезженное слово в интернете, если не считать слово «буквально». Но в этот раз — это...
Сначала графдизайн создать, потом код написать
Рассмотрим важность создания графического дизайна приложения до написания кода и нарисуем диаграмму последовательности с помощью пакета pgf-umlsd.
Как настроить Visual Studio Code для C, C++, Java, Python
Visual Studio Code — популярный редактор кода, бесплатный и с открытым исходным кодом. Но я уверен: каждый из нас, кто пытался настроить Visual Studio Code для разработки...
Основные принципы дизайна для НЕ дизайнеров
Я сформировала этот список, посредством многолетнего наблюдения за своими друзьями НЕ дизайнерами, семьей и коллегами, которым постоянно приходится сталкиваться с необходимостью применения дизайна в...
Как добиться большей зарплаты на собеседовании
Прежде чем мы начнём разговор о зарплате, давайте обсудим разработку ПО. Разработка — это квалифицированный труд. Вы явно не будете стоять на конвейере, добавляя по винтику...
Управление памятью в Ruby on Rails
Изучим модель памяти с ее компонентами, принцип работы сборщика мусора. Как оптимизируется использование памяти в Ruby, выполняются мониторинг и профилирование?
6 месяцев без Windows: ужасная правда об играх на Linux
Последние 6 месяцев я старался работать исключительно в Linux и не намерен отказываться от задуманного. Такой опыт оказался прогрессивным, обучающим и, временами, даже забавным....
Обучение «на всякий случай» против обучения «точно в срок»
Как программист должен поступить с новой информацией? Выучить «на всякий случай», мало ли пригодится в будущем? Или выучить «точно в срок» тогда, когда эти...
1984 в 2020: Социальная инженерия в Китае
Китай— крупнейшая по численности населения страна мира, в в которой проживает 1,4 миллиарда человек. Если бы правительство Китая не ввело агрессивную политику «одна семья — один...
SCDB: простая Open Source БД типа «ключ — значение»
Рассмотрим особенности нового решения для хранения данных. Приведем пример кода, обозначим перспективы.
P.S. Дорогой рефакторинг, нам нужно на время расстаться
Я люблю рефакторинг. Действительно люблю. В процессе TDD (разработки через тестирование) по мере прохождения тестов я могу сосредоточиться исключительно на коде, дорабатывая и доводя...
9 лучших примеров макетов сайта и идей для веб-дизайна в 2018
Есть всего одна возможность создать хорошее первое впечатление. Качественный дизайн сайта может в первую же секунду поразить посетителя. Именно поэтому дизайн главной страницы очень...
Как не опустить руки во время обучения чему-то новому?
В моей жизни было время, когда я регулярно добивался больших успехов в развитии своих навыков. Мне это удавалось, благодаря тому, что я изо всех...
Разработчики, которые постоянно что-то изучают — вот вам совет!
Я видел много людей, среди разработчиков, которые постоянно находились в состоянии разочарованности и неуверенности в себе. Это происходило из-за того, что они постоянно пытались...
Может ли ИИ покончить с усталостью от сигналов тревоги?
Усталость от сигналов тревоги может свести на нет работу службы безопасности. Можно ли решить эту проблему с помощью искусственного интеллекта? Попробуем ответить на этот вопрос, выяснив основные причины синдрома усталости от сигналов тревоги.
Чем лучше образование, тем умнее ИИ
Нужно чаще обсуждать ИИ в школах и университетах
Искусственный интеллект сделает нас умнее, эффективнее и здоровее.
Такой вывод я сделал благодаря своей работе: более пяти лет...
А вы сможете ответить на этот знаменитый вопрос из собеседования?
Разберем задачу про 100-местный самолет со всеми случаями и вариантами. Объясним, как получить правильный ответ и почему он именно такой.
Отказ после четырех раундов технических собеседований. Что делать?
Будущий инженер-программист должен быть готов к нелегкому испытанию - встрече с придирчивыми рекрутерами. Никто не хочет получить отказ на собеседовании, но лишь немногие отвергнутые кандидаты способны превратить свою неудачу в будущий успех.
Моя среда разработки в Linux 2018
В этой статье я немного пройдусь по приложениям на моем ноутбука на базе Linux. На написание материала меня вдохновил этот пост, только в моем случае...
Как правильно учиться Java-программированию: история одного тьютора
Моя история
Все началось больше десяти лет назад. Решив стать программистом, я начал изучать несколько языков, чтобы в конечном итоге найти «свой» язык.
В Java я...
Изысканные уловки хакеров для кражи подарочных карт
Схема работы “Black hat” хакеров стара как мир: найти цель, взломать, заработать денег. С течением последних лет было реализовано очень много хитроумных атак по...
Как написать чистый код, который легко читать
Рассмотрим практические советы по созданию кода, который впоследствии читается как книга. Чтобы их составить, автору пришлось проанализировать и сравнить множество подходов и приемов других разработчиков.
Как научиться программировать по 8 часов в день
Моя система продуктивности
Я программирую всю свою жизнь. Раньше я думал, что это норма — садиться за стол, открывать ноутбук, брать задачу из списка дел...
Магическая формула для улучшения навыков программирования
Вы программист или только хотите им стать, однако на этом этапе жизнь не прекращается. Вы должны, и мы надеемся хотите, улучшать свои навыки постоянно.
Да,...
Курс на продуктивность: 10 бесплатных инструментов и сайтов для разработчиков
Информативный обзор 10 полезных инструментов и сайтов для повышения продуктивности и сокращения времени разработки. Valgrind - для обнаружения ошибок памяти, Bootstrap - для создания потрясающих UI и многое другое.
Как определить цели разработчику программного обеспечения
Почему важно устанавливать цели
За последние несколько лет постановка целей стала неотъемлемой частью жизни, поскольку отслеживание процесса развития помогает в достижении новых высот.
Каждому специалисту по...
Через Apache Brooklyn к автономным вычислениям
Автономные вычисления ждут вас! А приобщиться к ним можно с помощью специального фреймворка Apache Brooklyn, способного управлять настройкой и развёртыванием приложений на основе сложных алгоритмов. Без лишних слов - это инструмент, который вас приятно удивит.
Сравниваем эффективность Redis, Kafka и RabbitMQ
Все эти брокеры успешно работают, но действуют при этом совершенно по-разному. Рассмотрим их главные особенности, отметим достоинства и недостатки.
5 S-принципов в программировании
Хотите прокачать свой уровень разработки, но не знаете, с чего начать? Возьмите на вооружение 5 S-принципов из производственного опыта компании "Тойота".
3 ошибки на собеседованиях по программированию, из-за которых можно получить отказ
После неудачного технического собеседования соискатели часто не могут понять, что пошло не так. Поговорим о распространенных ошибках и о том, как их избежать.
Как делать заметки как программист
Когда я был мал — писал ужасные конспекты: они представляли из себя тетради с грязным текстом и плохой структурой. Практически бесполезные.
Потом, когда я открыл...
BabyAGI — автономный ИИ-агент для оптимизации задач
Изучите 10 примеров задач, выполняемых автономным ИИ-агентом BabyAGI. Способность логически рассуждать, принимать сложные решения и контролировать параметры делает BabyAGI бесценным помощником в автоматизации управления задачами.
15 идей для вашего приложения. Часть 2
Предыдущие части: Часть 1
6. Поиск книг
Уровень: 2 — средний
Описание: приложение для поиска книг по названию, автору и т.д. Найденные книги и соответствующая информация о них выводится в...
Менеджеры пакетов NPM, PNPM и YARN
Не знаете, какой из менеджеров пакетов — NPM, YARN или PNPM — больше подойдет для вашего JS-проекта? Прежде чем принять решение, рассмотрите сильные и слабые стороны каждого варианта.
Топ-12 расширений VSCode
Эти расширения VS Code должны быть в арсенале каждого разработчика. Несмотря на различный уровень сложности, они помогут повысить вашу производительность, сделают рабочий процесс проще и увлекательней.
Что такое шаблон SAGA и какую проблему он решает в микросервисной архитектуре
Шаблон SAGA помогает решать специфическую для архитектуры микросервисов проблему. Это сложный в применении инструмент, которым должен владеть опытный разработчик.
Невероятная история Tux: наш любимый талисман Linux!
Все мы знаем наш любимый талисман Linux! Но почему именно этот пингвин стал логотипом Linux? В данной статье вы узнаете некоторые интересные подробности его истории!
Почему разработчики не должны пользоваться MacBook Pro?
Около десяти лет назад в интернете появилась статья, утверждающая, что “у каждого разработчика должен быть MacBook Pro”, в которой перечислялся ряд причин, например:
Лучший...
Продвинутая генерация ответа, дополненная результатами поиска (RAG): от теории до реализации на LlamaIndex
Ознакомьтесь с концепцией продвинутой RAG, которая позволяет устранить ограничения простой RAG. Для практики предлагаем руководство по реализации простого и продвинутого RAG-пайплайнов с использованием LlamaIndex.
Отладка для абсолютных новичков
Стать хорошим разработчиком — это как научиться свистеть. Многие умеют, но лишь единицы могут обучить этому других. Большинство же будет говорить вам что-то из серии: «Просто...
Обзор команд Git для отмены изменений
Откроем двери в мир Git и рассмотрим полезные команды для отмены самых разных изменений.
Чистая архитектура: руководство для начинающих
Разбираемся в том, что такое чистая архитектура, какие преимущества она дает и как ей следовать на практике. Рассмотрим все примеры с иллюстрациями.
Как перевести iPhone в черно-белый режим и почему вам следует это сделать
Разноцветный интерфейс вашего смартфона побуждает ваш мозг чаще его использовать. Установите черно-белый режим экрана, чтобы тратить меньше времени на бесконечный серфинг в интернете и...
Что стоит знать дизайнеру перед первым хакатоном
Опыт и уроки, извлеченные из участия и победы на хакатоне
Одна из причин, по которой я так люблю дизайн, заключается в том, что его постоянное развитие...
8 незаменимых веб-приложений для разработчиков
1. Online GDB
Online GDB — это браузерный компилятор, интерпретатор и отладчик. Поддерживает 20 языков программирования, включая C, C++, Python, Ruby, C#, Swift и JavaScript.
Для меня он бесценен...
5 лучших курсов по React Native для разработчиков мобильных приложений
Если вы — веб-разработчик, который хочет создавать мобильные приложения, но не хочет тратить время на изучение Java/Kotlin (для Android) или Objective C/Swift (для iOS),...
SQL в науке о данных
Введение
SQL (язык структурированных запросов) - язык программирования, используемый для запроса и управления данными в реляционных базах данных. Реляционные базы данных состоят из наборов двумерных...
10 полезных команд для командной строки и консоли
Консольные команды позволяют продвинутым пользователям работать еще быстрее и продуктивнее, так как редактура команд вручную отнимает много времени, а написание коротких, но эффективных инструкций для консоли доставляет не меньше удовольствия, чем само написание кода.
Как достичь уровня senior-разработчика
Разработчики ПО классифицируются по уровням опыта следующим образом:
· junior (2–3 года);
· senior (10+ лет);
· middle (период между junior и senior).
Однако многолетний опыт ничего не...
5 вечерних практик, которые помогают избежать выгорания
Вы программист или специалист по работе с данными, которого преследует профессиональное выгорание? Прислушайтесь к этим 5 советам - возможно, они помогут вам прийти в норму.
Java против Kotlin. Android
Противостояние Java и Kotlin — тренд последних дней. Java — везде, однако Kotlin наступает, предлагая значительные преимущества. Итак, Java и Kotlin конкурируют. Мы обсудим...
Лучшие приёмы HR от Google
Советы и уроки из книги Ласло Бока “Работа рулит!”
Google хорошо известна тем, что берёт к себе на работу только лучших из лучших. Отбор в компанию...
Как ИИ влияет на разработку мобильных приложений и пользовательский опыт
Искусственный интеллект (ИИ) - это технология в сфере компьютерных наук, которая выполняет человеческие задачи. Однако каким образом ИИ может изменить процесс создания мобильных приложений? Ответим на этот и сопутствующие вопросы.
Как ускорить навигацию командной строки
Знание полезных команд может творить чудеса. Мне часто приходится возиться с командными строками, помогая другим с отладкой кода и навигацией серверов, поэтому я прекрасно...
10 практик написания кода, на которые полагаются все старшие разработчики
Почему код, созданный старшими разработчиками, не только отлично работает, но и служит долго? Секрет кроется в использовании практик написания чистого, функционального и удобного в обслуживании кода. Ознакомьтесь с десятью из них, чтобы облегчить работу себе и своим будущим коллегам.
5 алгоритмов, которые изменили мир
Взаимодействие человека и компьютера было бы невозможно без алгоритмов. Пять из них сыграли революционную роль в нашей жизни.
Интеллектуальная синергия: динамические отношения между искусственным и человеческим интеллектом
ИИ дополняет потенциал человека, а люди следят за тем, чтобы ИИ служил интересам человечества. Рассмотрим подробно преимущества искусственного и человеческого интеллекта, а также способы формирования ими новой парадигмы, в которой будут гармонично сосуществовать инновации и эмпатия.
4 ключевых аспекта проектирования распределенных систем
Что конкретно подразумевают надежность, доступность, масштабируемость и обслуживаемость? В чем заключается важность этих характеристик распределенных систем?
Освоение безопасной для типов JSON-сериализации в TypeScript
Предлагаем руководство по использованию TypeScript для безопасной для типов сериализации и десериализации данных в формате JSON. Освоение этой стратегии позволит своевременно обнаруживать потенциальные ошибки во время разработки приложения.
Эволюция графического дизайна: от пещерной живописи до цифровой эпохи
В то время как дизайн UX/UI и продуктовый дизайн — относительно новые направления, история возникновения графического дизайна уходит в далекое прошлое. Графический дизайн появился...
Как оставаться в тренде dev-индустрии
Вряд ли кто-либо станет отрицать актуальность этого вопроса для большинства разработчиков: “Как оставаться в курсе последних новостей в области разработки, ее трендов и технологий?”
Этот...
Разрабатываем приложения для распознавания речи с помощью Python
Хотите создать своего голосового помощника и превзойти Siri и Яндекс Алису, но не знаете, с чего начать? Рассказываем и показываем, как работает распознавание речи на примере двух простых приложений, и советуем, как применить эти знания на практике.
9 советов для быстрой работы в UNIX и Linux терминале
Существует огромное множество команд для работы с терминалом UNIX и Linux. Все это многообразие не запомнить, как бы вам ни хотелось. Постоянный поиск нужной команды тормозит рабочий процесс, ко всему прочему сами команды не во всех случаях состоят из пары символов. В итоге это здорово мешает быстрой и легкой работе с терминалом. Именно поэтому, сегодня мы расскажем о командах, которые в несколько раз увеличат вашу производительность
Всё, что должен знать разработчик ПО о качестве кода
Вы можете этого не осознавать, но плохой код вы узнаете с первого взгляда. Как правило, он малопонятный или содержит много ошибок, чрезмерно многословный или...
Как успешно реализовать проверку состояния контейнера в Docker Compose
Разработчику важно понимать, что служба Docker действует должным образом, в противном случае могут возникнуть большие неприятности. Чтобы гарантированно предотвратить их, рассмотрим способы проверки состояния (Healthcheck) контейнеров в Docker.
Изучение Blockchain на Python
Неделю назад я поняла, почему испытывала неприязнь к Bitcoin. У меня не было его, и я не понимала как он работает. Я начала изучать...
Почему сниппеты кода со StackOverflow могут повредить ваш проект
StackOverflow стал спасением для многих программистов, включая меня. Некоторые из нас никогда не посещали домашнюю страницу StackOverflow. Единственный способ, по которому мы попадали на...
Руководство по Docker. Часть 1: образ, контейнер, сопоставление портов и основные команды
Docker для начинающих: логгирование, Docker Hub, выполнение команд внутри контейнера и докеризация первого веб-приложения на Node.js.
Расширения VS Code, в 3 раза повышающие скорость работы
Возьмите на заметку 5 лучших расширений VS Code. Они значительно ускорят ваш рабочий процесс и помогут избежать досадных ошибок при написании кода.
Sparrow: альтернатива ChatGPT от DeepMind
Представляем потенциального конкурента ChatGPT - диалогового агента Sparrow от DeepMind. По заверению разработчиков, он обеспечивает более безопасное общение за счет одновременного использования больших языковых моделей и обучения с подкреплением.
3 верных способа оптимизировать ревью на GitHub
Предлагаем 3 искусных приема для оптимизации ревью пул-реквестов: раздельный просмотр различий, отображение только новейших изменений и предложение изменений.
10 лучших легких дистрибутивов Linux для старых компьютеров
10. Peppermint
Peppermint — это облачно-ориентированный дистрибутив Linux, не требующий мощного железа для запуска. Он основан на Lubuntu и использует окружение рабочего стола LXDE для более плавной...
Список инструментов для обязательного использования
Будучи бедным студентом, я являюсь огромным фанатом различных бесплатных вещей, особенно программного обеспечения. Когда дело доходит до программного обеспечения, я, буквально, могу сделать что...
Не смотрите свысока на отладку через печать
Люди склонны пренебрежительно относиться к отладке через печать, ведь она не использует сложные инструменты. Не использует отладчики, изысканные логгеры или профайлеры. А используется скромная инструкция print. Или функция print(), console.log() или println!(), или как она называется на вашем языке.
SIMD имеет значение
Автор движка игровой физики Box2D рассказывает, как применяет SIMD для ускорения физики, а значит, и передвижений игрока в целом. В бенчмарках производительности вы найдете пока еще новый Apple M2, а в конце — порцию здоровой иронии над оптимизацией.
Байт-код Java: назначение, структура и использование
Занимаетесь разработкой компиляторов, современных фреймворков или Java-инструментов? Тогда вам необходимо знать, как что такое байт-код, какова его структура, зачем он нужен и как с ним работать. Эти знания позволят эффективно использовать байт-код Java в своих целях.
Паттерны проектирования генеративного ИИ: полное руководство
Преимущества генеративного ИИ, способного к созданию контента, давно стали очевидными для всех. Тем не менее сохраняется необходимость в дальнейшей разработке схем, способствующих высокой эффективности моделей на базе ИИ. Сегодня рассмотрим 9 наиболее перспективных паттернов, которые находят широкое применение в современной индустрии.
Пожалуйста, отложите TypeScript ненадолго
Сперва позвольте уточнить: типизированный JavaScript — это фантастика. Я использовал Flow и продолжу использовать TypeScript в будущем, ведь это мощнейший быстро растущий инструмент.
Но какова цена этой...
17 промежуточных программ для эффективной FastAPI-разработки
Ознакомьтесь с промежуточным ПО, ставшим неотъемлемой частью FastAPI-разработки. Эти встроенные модули, а также сторонние и пользовательские промежуточные программы помогут расширить функциональные возможности приложений, обеспечить их эффективность и безопасность.
5 настроек рабочего стола Linux для разработчиков
Linux: программируйте удобнее
Как только я начал работать из дома, я решил, что пришло время капитального ремонта рабочего стола. В офисе я обычно использую MacBook...







































































































