Pull to refresh
1
0
Send message

Обучение программированию: рисование пальцами и убийство зомби

Reading time14 min
Views8.4K

Zmob, моя первая (и единственная) собственная игра.

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

Образование против исследований


В этом семестре я работаю помощником преподавателя вводного курса по Python, и это вгоняет меня в депрессию. Я вспоминаю свои ранние годы программирования, когда возможности казались почти безграничными, а добавление новых возможностей в мои программы было восхитительным и радостным процессом. Я гордился каждой строкой, хвастал друзьям о том, какие потрясающие вещи мне удавалось сделать, и чувствовал себя всемогущим. Мир в буквальном смысле менялся под моими пальцами. Я мог облечь в плоть практически любую идею, которая мне была интересна, и любую грань жизни, которую хотел исследовать. Я развил в себе неутолимую жажду к программированию, которая остаётся со мной и по сей день.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Как сделать ваш HTML отзывчивым, добавив одну строку кода на CSS

Reading time4 min
Views64K
Привет, Хабр! представляю вашему вниманию перевод статьи «How to make your HTML responsive by adding a single line of CSS» автора Per Harald Borgen.



В этой статье я научу вас, как использовать CSS Grid для создания крутой сетки изображений, которая изменяет количество столбцов в зависимости от ширины экрана или окна браузера.

Самое крутое, что для добавления отзывчивости потребуется написать одну строчку кода на CSS
Читать дальше →
Total votes 79: ↑69 and ↓10+59
Comments38

Оптимизация поиска решений на github

Reading time2 min
Views1.9K
В процессе работы над большим проектом, заимствование чужих модулей и готовых решений экономит огромное количество времени разработчиков и денег инвесторов. Одним из самых больших хранилищ таких решений безусловно является github.

Под катом маленькая хитрость, которую я использую при поиске и выборе решений github.
Читать дальше →
Total votes 12: ↑7 and ↓5+2
Comments2

Строим домашний CI/CD при помощи GitHub Actions и Python

Reading time12 min
Views59K

Как то вечером, придя домой с работы, я решил немного позаниматься домашним проектом. Я сделал несколько правок и сразу захотел поэкспериментировать с ними. Но до экспериментов мне пришлось заходить на VPS, пулить изменения, пересобирать контейнер и запускать его. Тут я и решил, что пора разобраться с непрерывной доставкой.

Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments15

Самый беззащитный — это Сапсан

Reading time3 min
Views235K
image

Был я как-то на ZeroNights, это очередная конференция по информационной безопасности, которая в этом году была совсем шлаком.

Там я хотел как всегда что-либо поломать, получить за это приз, и т.д., но как я выяснил — интересных задач там не было, и пришлось развлекать себя самому.

Что происходило там — особой смысловой нагрузки не несёт, а вот что началось потом — это что-то.

Как закончилась конференция, все её участники взяли билеты на сапсан, последний сапсан Санкт-Петербург — Москва выезжает в 21:00, и я на него успевал…
Читать дальше →
Total votes 531: ↑506 and ↓25+481
Comments372

«Портативная» ретро-консоль своими руками

Reading time6 min
Views30K
Пятничный привет, Хабр!

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

В результате мы окунемся в период, когда слова Dendy и Sega вызывали трепет, и получим вот такую «карманную» консоль:


Под катом много картинок и краткое видео для тех кто любит смотреть, а не читать
Total votes 73: ↑69 and ↓4+65
Comments59

Telegram бот для персонализированной подборки статей с Хабра

Reading time12 min
Views6.3K

Для вопросов в стиле "зачем?" есть более старая статья — Натуральный Geektimes — делаем пространство чище.


Статей много, по субъективным причинам некоторые не нравятся, а некоторые, наоборот, жалко пропускать. Хочется оптимизировать этот процесс и экономить время.


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


  • Для разных браузеров на компе/телефоне приходится настраивать заново, если это вообще возможно.
  • Жёсткая фильтрация по авторам не всегда удобна.
  • Не решена проблема с авторами, чьи статьи не хочется пропускать, даже если они выходят раз в год.

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


Изначально я хотел генерировать rss ленту (или даже неколько), оставляя там только интересное. Но в итоге получилось, что чтение rss показалось не очень удобным: в любом случае для комментирования/голосования за статью/добавления её в избранное приходится заходить через браузер. Поэтому я написал бота для телеграмма, которые кидает мне в личку интересные статьи. Телеграм сам по себе делает из них красивые превьюшки, что в сочетнии с информацией об авторе/рейтинге/просмотрах выглядит довольно информативно.



Под катом подробности типа особенностей работы, процесса написания и технических решений.

Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments2

Многопользовательский чат на React с бэкендом от Chatix

Reading time17 min
Views10K

Chatix Chatroom


Сейчас я покажу вам как можно сделать чат для команды/пользователей/друзей если у вас нет своего бэкенда или вы не хотите тратить время на его разработку. Мы сделаем простой текстовый чат и на это у нас уйдет около часа.


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


Готовый код проекта доступен на GitHub
Demo

Читать дальше →
Total votes 23: ↑11 and ↓12-1
Comments8

Зарплатная вилка. Ты ж у мамы программист

Reading time7 min
Views160K
Думаю что у каждого ИТ-специалиста наступает тот момент, когда он хочет написать подобный текст может и не для себя, а для десятков знакомых, которые не работают в этой сфере и не понимают как и что. Возможно кому-то будет полезно просто дать ссылку на подобную статью, чем в 10 раз объяснять самому.

Дело в том, что ИТ-сфера одновременно бурно развивается (все еще) и в то же время полна множества устоявшихся стереотипов.
Читать дальше →
Total votes 249: ↑195 and ↓54+141
Comments472

Ещё 5 дерзких тренировочных проектов для разработчика (Layer, Squoosh, Калькулятор, Website Crawler, Music Player )

Reading time2 min
Views14K
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments18

Введение в Git

Reading time17 min
Views149K

Оглавление


Предисловие
1. Настройка git
....1.1 Конфигурационные файлы
....1.2 Настройки по умолчанию
....1.3 Псевдонимы (aliases)
2. Основы git
....2.1 Создание репозитория
....2.2 Состояние файлов
....2.3 Работа с индексом
....2.4 Работа с коммитами
....2.5 Просмотр истории
....2.6 Работа с удалённым репозиторием
3. Ветвление в git
....3.1 Базовые операций
....3.2 Слияние веток
....3.3 Rerere
4. Указатели в git
....4.1 Перемещение указателей
5. Рекомендуемая литература

Предисловие


Git — самая популярная распределённая система контроля версиями.[1][2]

Основное предназначение Git – это сохранение снимков последовательно улучшающихся состояний вашего проекта (Pro git, 2019).
Читать дальше →
Total votes 40: ↑34 and ↓6+28
Comments27

Ничего не работает и всем пофиг

Reading time3 min
Views156K

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

  • На моем iPhone 4s 3 гигабайта пространства занимает что-то, что iTunes определяет как “Other”. Никто не знает, что это за “другое” и предлагается либо стереть полностью настройки, либо “удалить и добавить еще раз почтовые аккаунты”. Вообще-то это проблема для меня, потому что на устройстве всего 16 гигабайт!
  • Windows Indexing Service на моем десктопе работает уже 3 дня подряд. Решение? Удалить и пересоздать индекс. Справился всего лишь за день.
  • На каждого человека на моем iPhone приходится 4, а иногда и 5 контактов. Я их всех связал, но они все равно показываются.
  • В программе iMessage у меня есть один человек, который пишет мне и его сообщение показывается от одного из трех контактов с тем же именем. Чтобы пообщаться с ним мне нужно каждый раз узнавать от какого из “его” аккаунтов пришло сообщение.
  • У Microsoft Outlook, наверное, никогда не получалось “корректно завершиться”.

Читать дальше →
Total votes 363: ↑303 and ↓60+243
Comments393

Шесть задачек для Front-End разработчика

Reading time2 min
Views45K

1. Форма кредитной карты


Клёвая форма кредитной карты с гладкими и приятными микровзаимодействиями. Включает форматирование чисел, проверку и автоматическое определение типа карты. Она построена на Vue.js, а также полностью адаптивная. (Посмотреть можно здесь.)

image

credit-card-form

Чему научитесь:

  • Обрабатывать и валидировать формы
  • Обрабатывать события (например, при изменении полей)
  • Разберетесь как отображать и размещать элементы на странице, особенно данные кредитной карты, которая поверх формы
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments43

[в закладки] PDF- и ePUB-версия руководства по React

Reading time3 min
Views43K
Привет Хабр! В этом году мы делали перевод огрооомного обучающего курса по React — в нашем блоге он был аж в 27 постах. В каждой части, от простого к сложному, выдавался концентрат знаний, которые тепло оценили читатели нашего блога. А сегодня мы поймали себя на мысли, что не выпустили все части одним большим куском — исправляемся!



Для новых читателей нашего блога — два бонуса внутри.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments9

Способы создания гистограмм с помощью Python

Reading time2 min
Views166K
За последний год я сталкивалась с необходимостью рисования гистограмм и столбчатых диаграмм достаточно часто для того, чтобы появилось желание и возможность об этом написать. Кроме того, мне самой довольно сильно не хватало подобной информации. В этой статье приведен обзор 3 методов создания таких графиков на языке Python.

Начнем с того, чего я сама по своей неопытности не знала очень долго: столбчатые диаграммы и гистограммы — разные вещи. Основное отличие состоит в том, что гистограмма показывает частотное распределение — мы задаем набор значений оси Ox, а по Oy всегда откладывается частота. В столбчатой диаграмме (которую в англоязычной литературе уместно было бы назвать barplot) мы задаем и значения оси абсцисс, и значения оси ординат.

Для демонстрации я буду использовать избитый набор данных библиотеки scikit learn Iris. Начнем c импортов:

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()

Преобразуем набор данных iris в dataframe — так нам удобнее будет с ним работать в будущем.

data = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target'])

Из интересующих нас параметров data содержит информацию о длине чашелистиков и лепестков и ширине чашелистиков и лепестков.

Используем Matplotlib
Построение гистограммы
Cтроим обычную гистограмму, показывающую частотное распределение длин лепестков и чашелистиков:

fig, axs = plt.subplots(1, 2)
n_bins = len(data)
axs[0].hist(data['sepal length (cm)'], bins=n_bins)
axs[0].set_title('sepal length')
axs[1].hist(data['petal length (cm)'], bins=n_bins)
axs[1].set_title('petal length')

image
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments4

Лёгкое программирование: канбан-доска для GitLab за один рабочий день

Reading time9 min
Views36K
Рабочий понедельник начался со следующего диалога:

Руководитель (P): У тебя в команде не понятно, кто чем занимается.
Я (Я): Это да, у нас нет инструмента, который бы отображал общую картину работы над задачами. В гитлабе есть канбан-доски, но они только в контексте проектов и групп. Общая канбан-доска решила бы проблему.
Р: Тогда сделай доску.
Я: К утру будет готово.

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

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

Конечно, душа лежала к ламповой физической доске. Я даже начал размышлять об использовании DualShock 4 в качестве контроллера механической руки, но я сам себе обозначил дедлайн утром следующего дня, поэтому пришлось обойтись бездушным программным решением.

Читать дальше →
Total votes 89: ↑86 and ↓3+83
Comments39

Загрузка музыки ВКонтакте

Reading time6 min
Views26K

Доброго времени суток всем.


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


Для работы нужно скачать модули vk_api и request!


Для начала подключим необходимые модули и объявим некоторые переменные:


import os
import pickle
import vk_api
import requests

from vk_api import audio

from time import time

vk_file = "vk_config.v2.json"
REQUEST_STATUS_CODE = 200 
path = 'vk_music/'
Читать дальше →
Total votes 45: ↑36 and ↓9+27
Comments50

Искусственный интеллект в файтинге Shadow Fight 3

Reading time6 min
Views11K


Геймдизайнеры регулярно сталкиваются с задачей создать интересный ИИ. Этот процесс может быть как относительно простым, так и крайне сложным, в зависимости от нужд проекта и целей, которые вы преследуете. Старший геймдизайнер Banzai Games Михаил Драговаловский рассказал про опыт работы над ИИ для популярного мобильного файтинга Shadow Fight 3.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments6

Кармическое проклятье Хабра

Reading time21 min
Views100K
Вся суть


Непредвиденные последствия


«Система кармы Хабра и ее влияние на пользователей» — это тема для курсовой как минимум
Тема про карму на «Пикабу»

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

Мне пришлось всерьёз задуматься об этом после того, как я неожиданно потерял возможность писать больше одного комментария в пять минут.

При этом внешне всё шло отлично: мои комментарии всё время плюсовали, мой рейтинг рос — и вдруг оказалось, что у меня отрицательная карма. Весь мой длительный опыт интернет-общения, все пользовательские привычки, да и банальный здравый смысл кричали мне, что это какая-то ошибка: показатель одобрения пользователя сайта другими пользователями сайта не может одновременно расти и падать! Но я решил не рубить сплеча, а провести небольшое исследование, как аналитическое (в виде изучения мнений пользователей о карме), так и статистическое (в виде анализа показателей аккаунтов).
Читать дальше →
Total votes 345: ↑306 and ↓39+267
Comments1311

Как разработчик, я никогда не знаю себе цену, потому что её нет. Но вся система построена так, как будто она есть

Reading time11 min
Views105K


Каждый раз перед собесом я говорю себе: "Спокойно, не нужно ничего выдумывать, доучивать и врать, твоих знаний и опыта достаточно для того, что бы работать у них. Ты усилишь любую команду, тебе есть что предложить, а пробелы в твоих знаниях — приемлемы. Если бы они знали о твоих навыках всё, что знаешь ты, они бы точно тебя взяли". Но когда начинается собеседование, я всегда перестаю в это верить. Все два часа интервью я хожу как по минному полю, что бы не дай бог не спалиться, что я чего-то не знаю.

Читать дальше →
Total votes 229: ↑205 and ↓24+181
Comments324

Information

Rating
4,047-th
Registered
Activity