Как стать автором
Обновить
46
0
Jessy James @Jessy_James

Инженер программист

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

Малоизвестные и интересные особенности C и C++

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров45K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Всего голосов 161: ↑160 и ↓1+159
Комментарии61

Как получать музыку из ВКонтакте в 2022 году

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

При проектировании проекта, я решил разделить его на две части. Первая — получение музыки из ВК. Вторая — сам бот. И начать я решил с первой части.

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

Я решил посмотреть что сейчас отдает ВКонтакте при воспроизведении записи и полез во вкладку network, вот что я там увидел...

Читать далее
Всего голосов 57: ↑55 и ↓2+53
Комментарии17

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

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

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Всего голосов 190: ↑189 и ↓1+188
Комментарии37

Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 1

Время на прочтение29 мин
Количество просмотров18K
Иногда во время работы над проектом на языке Python возникает желание использовать библиотеку, которая написана не на Python, а, например, на C или C++. Причины для этого могут быть разные Во-первых, Python — язык замечательный, но в некоторых ситуациях недостаточно быстрый. И если вы видите, что производительность ограничена особенностями языка Python, то имеет смысл часть программы написать на другом языке (в этой статье мы будем говорить про C и C++), оформить эту часть программы в виде библиотеки, сделать Python-обвязки (Python bindings) поверх нее и использовать полученный таким образом модуль как обычную Python-библиотеку. Во-вторых, часто случается ситуация, когда вы знаете, что есть библиотека, которая решает требуемую задачу, но, к сожалению, эта библиотека написана не на Python, а на тех же C или C++. В этом случае также мы можем сделать Python-обвязку над библиотекой и пользоваться ей, не задумываясь о том, что библиотека изначально не была написана на Python.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Разбираемся с декораторами в Python

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

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

Читать далее
Всего голосов 23: ↑19 и ↓4+15
Комментарии11

Команда awk – примеры использования в Linux и Unix

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

В этом базовом руководстве вы узнаете самые основы команды awk, а также увидите некоторые способы её использования при работе с текстом, включая вывод содержимого файла, а также его конкретных столбцов, строк и слов по указанным критериям. Приступим!
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии16

Быстрый бэкап всех ваших репозиториев Github

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

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

Потом я завел свои "облака" и хранил код на своем железе и рабочих компьютерах. И наконец появился Github. По началу что-то ещё дублировалось на своих серверах и внешних дисках, но к сегодняшнему дню я на столько привык к сервису Github, все на столько удобно и надёжно, что страх о том что "дискетка" может сломаться постепенно улетучился.

И тут на тебе! Оказывается в любой момент, по не зависимой от меня причине, меня могут отключить от этого технологического чуда! :-)

Читать далее
Всего голосов 38: ↑31 и ↓7+24
Комментарии25

Kivy. Сборка пакетов под Android и никакой магии

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

Во вчерашней статье Python в Mobile development, в которой речь шла о библиотеке KivyMD (коллекции виджетов в стиле Material Design для использования их в кроссплатформенном фреймворке Kivy), в комментариях меня попросили рассказать о процессе сборки пакета для платформы Android. Для многих этот процесс, к сожалению, был и остается чем-то из ряда магического шаманства и не подъёмным для новичков делом. Что ж, давайте разбираться, так ли на самом деле все сложно и действительно ли я маг и волшебник…
Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии113

arr[-1] или самые редкие конструкции в С

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

Топ 22 самых редких конструкций языка С. От макросов с аргументами до каламбура типов - найдётся применение каждой. tmpfile() вступает в силу!

Читать далее
Всего голосов 54: ↑37 и ↓17+20
Комментарии169

Дрон подводный…

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

Версия 0...

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

Но у нас есть АБСОЛЮТНО не освоенная стихия, море, а море у нас вокруг... и там еще никого не ловят (дронов в частности)...

Подумано - задумано, перво-наперво погружаемся в интернеты...

Читать далее
Всего голосов 84: ↑82 и ↓2+80
Комментарии58

«Вечная лампочка» из новых Lexman

Время на прочтение2 мин
Количество просмотров127K
Я нашёл ещё один неплохой вариант для простейшей переделки в «вечную лампу». Это лампы Lexman 10 Вт 1000 лм, продающиеся по 85 рублей в магазинах Леруа Мерлен.


Читать дальше →
Всего голосов 132: ↑132 и ↓0+132
Комментарии215

ПК для «выживальщиков», барограф и роборука: новые проекты на базе Raspberry Pi

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

Новогодние и рождественские праздники уже прошли, а значит, время публиковать новые проекты на базе Raspberry Pi. Прошлая подборка проектов была как раз праздничной, светлой и шумной, если так можно выразиться. Ну а сейчас все проекты уже серьезные, большую часть можно назвать научными. Под катом — самые интересные новые проекты на базе Raspberry Pi, которые нам удалось найти.
Читать дальше →
Всего голосов 54: ↑52 и ↓2+50
Комментарии12

Qwt и Qt Creator. Быстро и просто. Часть 1: визуализатор данных

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


Для понимания этой статьи читатель должен иметь начальный опыт разработки windows-приложений в среде Qt Creator.
В примерах используются Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.


Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и проч. Следует лишь задавать параметры этих элементов.
Аналогия: для того, чтобы построить график в Excel Вы выбираете данные и настраиваете параметры их отображения: минимум и максимум шкал, цвет кривых, подписи данных и др. За визуализацию отвечает Excel – сами элементы Вы не программируете.
Особо отмечу, что Qwt позволяет работать с достаточно большими объемами данных (я работал с 200 000 точек) без возникновения раздражающих «тормозов».
В данной статье мы будем отображать кривую на графике, масштабировать ее, перемещаться по графику, смотреть координаты курсора. Таким образом, мы реализуем минимальный функционал, необходимый для вывода и просмотра графиков. В последующих статьях наш графический редактор будет оснащен дополнительными возможностями.

Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии7

Её сиятельство Гильза

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

«Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам». У Вильяма нашего Шекспира эта фраза подразумевала различную паранормальщину, вроде тени отца Гамлета, намекавшей на совершение ряда тяжких преступлений, но если внимательно присмотреться, то и появление многих привычных нам вещей тоже представляется многим людям магией. И совсем необязательно это Большой Адронный Коллайдер, желанная, но дефицитная игровая видеокарта или 8К-телевизор от Самсунга. Это может быть гораздо более простая вещь – например, патрон. Пистолетный, винтовочный, револьверный – неважно. Патрон является вроде бы и мелким, но очень важным персонажем в мировой военной истории. Мы читаем про дефицит патронов в Российской Императорской Армии и ужасаемся ему. А потом со сходными чувствами – про винтовку с пятью патронами на человека в РККА. Или истории про отказ в приёме на вооружение автоматических образцов, потому что расход патронов будет излишне велик. И постоянно этот персонаж возникает в сюжете в связи с какими-то перипетиями – недостатком, срывом поставок, освоением производства, проблемами с качеством. Зато, когда с ним нет проблем, он незаметен.

При этом само производство патронов обычно остаётся за кадром. Ну как-то их там делают, причём миллионами и миллиардами. Магия, да и только. А где магия, там и мифы, вроде самого живучего – про диаметр советских папирос и макарон, равный 7.62 мм, что якобы позволяет развернуть производство патронов на любой макаронной фабрике за два часа.Итак, говорить будем про унитарный патрон в металлической гильзе.
Читать дальше →
Всего голосов 112: ↑98 и ↓14+84
Комментарии121

«Скажи мне свой адрес и я скажу как зовут твоего соседа», или как дешево и быстро проверять любой объект недвижимости

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

Все, что понадобится — подтвержденная учетная запись на Госуслугах и небольшая плата за сведения

СМИ время от времени сотрясают скандалы связанные с тем, что у того или иного государственного служащего находят дома, квартиры, участки и другую недвижимость. Их сменяют другие скандалы о том, что имя  чиновника в государственных реестрах зашифровывается.

Как удается узнавать собственников недвижимости? Неужели любой может узнать кто владеет тем или иным участком, домом или квартирой?

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

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

Сколько это стоит?

Официальная плата Росреестра от 1 до 5 рублей за одну выписку. Доступ к выпискам оплачивается по УИН на сайте Росреестра пакетами от 100 шт. до 500 000 шт.

Читать далее
Всего голосов 42: ↑36 и ↓6+30
Комментарии48

Разработка чрезвычайно быстрых программ на Python

Время на прочтение7 мин
Количество просмотров68K
Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно зависит от разработчика, который её написал, от его знаний и от умения создавать оптимизированный и высокопроизводительный код.



Автор статьи, перевод которой мы сегодня публикуем, предлагает доказать то, что те, кто называет Python медленным, неправы. Он хочет рассказать о том, как улучшить производительность Python-программ и сделать их по-настоящему быстрыми.
Читать дальше →
Всего голосов 90: ↑83 и ↓7+76
Комментарии47

Простой Twitter-бот на Python

Время на прочтение3 мин
Количество просмотров34K
В данной статье я бы хотел поделиться опытом написания небольшого твиттер-бота на Python.

Вступление



На написание бота меня натолкнул известный многим «пичалька-бот» в Twitter, который автоматически шлет реплаи всем, кто упомянит слово «пичалька» в своем твите. Поскольку в тот момент я занимался активным изучением Python, было решено писать на нем.

Читать дальше →
Всего голосов 55: ↑47 и ↓8+39
Комментарии31

Книга «Глубокое обучение с подкреплением на Python. OpenAI Gym и TensorFlow для профи»

Время на прочтение5 мин
Количество просмотров8.7K
image Привет, Хаброжители! Глубокое обучение с подкреплением (Reinforcement Learning) — самое популярное и перспективное направление искусственного интеллекта. Практическое изучение RL на Python поможет освоить не только базовые, но и передовые алгоритмы глубокого обучения с подкреплением. Эта книга предназначена для разработчиков МО и энтузиастов глубокого обучения, интересующихся искусственным интеллектом и желающих освоить метод обучения с подкреплением. Прочитайте эту книгу и станьте экспертом в области обучения с подкреплением, реализуя практические примеры в работе или вне ее. Знания в области линейной алгебры, математического анализа и языка программирования Python помогут вам понять логику изложения материала.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии0

Нетипичный «ls» или как развлекаются линуксоиды

Время на прочтение2 мин
Количество просмотров33K
Однажды в телеграм чат питерского сообщества линуксоидов SPbLUG я кинул забавную задачку:
Выведите список файлов в домашней директории максимально возможным количеством способов, без использования ls или его алиасов(1 способ — 1 балл)

Такое же задание чуть позже прилетело в ещё один чат, и вот что из этого получилось:
Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии136

Бот для VK на Python с MySQL за час ч.1

Время на прочтение3 мин
Количество просмотров28K
В интернете есть много туториалов как написать бота для Вконтакте, но все они имеют существенные недостатки для новичков. Они дают совсем минимальную базу из-за которой в будущем новичкам будет трудно понять как работают те или иные вещи.

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

Итак начнем.

Что нам понадобится?


  • Python начиная с версии 2.7 (Весь код тестировался на версии 2.7.16 и 3.7.3)
  • Модуль PyMySQL
  • Модуль vk_api
  • Модуль requests
  • Группа Вконтакте (Внимание! Бот будет работать именно со стороны группы, а не стороны аккаунта человека)
  • База данных (включая данные о пользователе и т.д)

Подключение


Для начала подключим все библиотеки:

import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import pymysql.cursors
import requests

Теперь можно приступить к настройке бота и базы данных.

Именно в моем случае все данные находятся в файле config.py. Вы же можете прописать их где угодно. На функционал то никак не повлияет.

Подключение базы данных


Для этого создадим функцию при помощи модуля PyMySQL:


def get_connection():
    connection = pymysql.connect(host='you_host',
                                 user='you_user',
                                 password='you_password',
                                 db='you_db'
                                 charset='utf8mb4',
                                 cursorclass=mymysql.cursors.DictCursor)
    return connection

Эта функция будет возвращать данные для дальнейшей работы с базой данных. Соответственно подставляем свои данные где видим «you_».
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии2
1

Информация

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