Счетчик флуда [UPD: добавлен нормальный интерфейс и прочие удобства]

+97
в блоге IT Pony!

Давайте вспомним, кто где сколько нафлудил!
Мой первый говнокод, не судите строго хДДД (Наживаем «загрузить копию», распаковываем...")
После распаковки находим приложение Tabun, запускаем, далее вводим ник того, о чьем флуде хотите узнать, во второй строчке, если это ваш акк и вы хотите посчитать не только внешку, но и закрытые блоги, то пароль (символы показываться не будут), либо вторую строчку можно просто пропустить, нажав Enter без пробелов и лишних символов (Программа будет работать, только если пароля нет совсем, или если он правильный) (Это работает через api Андреймала, насчет безопасности — к нему...)
Третья строчка — не выводить посты, в которых вы откомментили n или меньше раз. (Это чтобы в выводе не было вот такого мусора) Рекомендуется ввести 10 или больше. Но если хотите, чтоб прям вообще все посты показало, где вы хотя бы 1 комментарий оставили, тогда введите 0
Если у вас есть Питон 3.6 с lxml и Tabun_Api, то скопируйте в него исходник
Во время ввода ника, в папке с программой создастся текстовый файл с этим ником (например Sasha-Flyer.txt), по завершению работы программы файл зафлудится заполнится
примерно такими даннымиSasha-Flyer за 412 коммент(ов) написал 5683 слов(а) в топике 'Абсурдный Ночной Комикс №41', получив за это 12
Sasha-Flyer за 319 коммент(ов) написал 4693 слов(а) в топике 'Давайте поможем Флаеру найти вторую половинку!', получив за это 0
Sasha-Flyer за 300 коммент(ов) написал 2985 слов(а) в топике 'Абсурдный Ночной Комикс №4', получив за это 18
Sasha-Flyer за 298 коммент(ов) написал 3451 слов(а) в топике 'Абсурдный Ночной Комикс №5', получив за это 48
Sasha-Flyer за 250 коммент(ов) написал 3822 слов(а) в топике 'Почему со мной перестают общаться?', получив за это 25
Sasha-Flyer за 245 коммент(ов) написал 3668 слов(а) в топике 'АльтерБРЕДации №736: Последняя капля', получив за это -118
Sasha-Flyer за 236 коммент(ов) написал 2851 слов(а) в топике 'Расскажите новичку, что здесь делают?', получив за это -1161
Sasha-Flyer за 232 коммент(ов) написал 3362 слов(а) в топике 'ИнтерБРЕДации: Мельчайшие подробности', получив за это -530
Sasha-Flyer за 205 коммент(ов) написал 2546 слов(а) в топике 'МикроБРЕДации #105: Найти крайнего', получив за это 10
Sasha-Flyer за 203 коммент(ов) написал 3356 слов(а) в топике 'AdultBronyCon — развод или реальный 18+ конвент, который пройдет в феврале?', получив за это 96
Sasha-Flyer за 201 коммент(ов) написал 2776 слов(а) в топике 'Завтра ложусь в психиатрический диспансер (UPD: Не годен!)', получив за это 69
Всего слов: 302279, всего плюсов в Ваших комментах: 6362

UPD:
Версия 2 с интерфейсом:
www.icloud.com/#iclouddrive/08bWNui1jxAXEtczduRkjIFsA
Помимо добавления интерфейса:
Файл весит меньше, теперь он один безо всяких dll, и теперь по завершению работы текстовый файл откроется автоматически.
Исходник второй версии

197 комментариев

Ап в ленту… Хотя скорее всего EXEшник нигде работать не будет, кроме как на моей пиратской винде хДДД
Sasha-Flyer
+1
У меня робит на 10 винде.
ovnd
+1
класс)
Sasha-Flyer
+1
Пока что работает!
Necto
+2
Ну и какая мне от этого польза?
stalnoy_brony
+2
Ностальгия? Не думаю, что все олдфаги помнят, в каких постах они больше всего провели время.
Sasha-Flyer
+2
Sasha-Flyer за 201 коммент(ов) написал 2776 слов(а) в топике 'Завтра ложусь в психиатрический диспансер (UPD: Не годен!)', получив за это 69

У меня тут вопрос… В конце есть строчка про получение чего-то. Речь идёт про силу?
Necto
+1
Речь идет про плюсы. На 201 коммент я получил 69 плюсов в комменты в том топике.
Sasha-Flyer
0
Sasha-Flyer за 179 коммент(ов) написал 1983 слов(а) в топике 'Коко Помель больше не Коко', получив за это -1868

Да уж, от этой строчки у меня глаза на лоб полезли от удивления.
Necto
+3
Дааа… Было дело…
Sasha-Flyer
0
Прямо какое-то коллекционирование марок бабочек параспрайтов.
VIM
+1
Да там вроде вообще всех заминусили, насколько я помню.
PeaceMaker Изменён автором
+1
69
Многозначительное число.)
VIM
+2
Хм. И тут Саша понял, что его будут минусить… возможно даже ногами…
А?
Morning_Mist
+2
Как я понимаю, все его посты начинаются с минусования, та что тут ничего удивительного.
Necto
+2
Это да. Зато реалистичная кардиограмма получается)))
Sasha-Flyer
+1
Флаер, если у тебя такая кардиограмма, то тебе нужно обратится к врачу.
Necto
+3
Доктор, мы его теряем.
Morning_Mist
+3
— Врач, что со мной?
— У вас Tabun.
Sasha-Flyer
+1
Офигеть! Ты что, кодишь на PyQt? Да это же круто, ё-моё! Только будь осторожнее: Qt лагает, если обращаться с ним не филигранно.
Mainframe
+1
P. S. А запаковать можно было и nuitka. А если уж PyInstaller'ом, то хотя бы в режиме «одного файла». Так ведь можно было?
Mainframe Изменён автором
+1
Так я врубал режим одного файла, а он не хочет
Один файл там 556 МБ бы весил…
Sasha-Flyer
0
Не знаю насчёт вообще, но конкретно сабж просто упакован криво и pyqt в нём случайно
andreymal Изменён автором
+3
Угу, там много чего было «случайно», и большинство этого случайного я тупо удалил оттуда, чтобы файл весил приемлемое количество МБ.
Sasha-Flyer
0
Да уже посмотрел в исходник, PyQt там и не пахнет. -_-
Mainframe
+2
PyQt Я так понимаю это интерфейс делать?
Sasha-Flyer
0
Не только. Это целый фреймворк, написанный на C++. Но как и сказал, точно и филигранно он ведёт себя при таком же филигранном обращении.
Mainframe
+2
Комбайны не нужны, gtk рулит
andreymal
+2
Я на GTK тоже пишу, не спорю))))
Mainframe
+2
stdout рулит, а где не справляется stdout и хочется свистоперделок — можно заюзать веб.
narf
+1
А как бы примерно выглядело окошко с тремя вводимыми параметрами для такой программы? В гугле я сейчас какую-то дичь нахожу только, не могу разобраться…
Для следующей идеи мне точно понадобится хоть какой-то примиивный интерфейс. Надо разобраться…
Sasha-Flyer
+1
Я, конечно, понимаю, что Саша, что Флаер, но минусы летят какие-то сейчас незаслуженные.
То есть, тут же он ничего даже провокационного не пишет, просто забавная и кому-то, возможно, полезная приложенька.
Tea
+2
Скорее всего эти люди думают, что я пароли собрался красть, но даже для таких я специально исходник показал.
Sasha-Flyer
+1
Грустно это как-то.
Tea
+1
Люди в основе своей балбесы подверженные страстям
Boshy
+1
Совсем не факт, что то, что в исходнике, и то, что в архиве, это одно и то же)
andreymal
+2
Ну так если кто не верит — может или не вводить пароль совсем, или пользоваться исходником.
Sasha-Flyer
+1
Твой ехе из архива сам автоматически вычитает все пароли с компа и попутно установит майнер биткоинов, и попробуй докажи параноикам что это не так)))
andreymal
+6
Мне кстати было забавно наблюдать, когда мамкин антивирус автоматически начал проверять мою собственную программу, когда я её только скомпелировал.
Sasha-Flyer
+1
Ну нихера себе.
Мой внутренний кармаклоппер стоя хлопает в ладоши)
mirdver
+2
while True:
    ...
    try:
        html = user.urlread("/profile/{0}/created/comments/page{1}/".format(s, i)).decode('utf-8')
    except api.TabunError as exc:
        if exc.code != 500: raise
        html = exc.exc.read().decode('utf-8')
    ...
    i+=1

А CloudFlare за такой дудос по рукам не ударит, если я, например, комменты Октавиана попытаюсь таким способом вытащить? :D

Ну и да, строчка сезона:
t=int(3)
Wolfram
+2
В среднем по два запроса в секунду — пока не ударяло
andreymal
+2
Там tabun_api.User что ли не разрешает чаще отправлять?
Wolfram Изменён автором
+2
Скорее всего просто страница так долго загружается.
Sasha-Flyer
+1
Это там тоже есть, но табун сам по себе тормознутое говно)
andreymal
+2
Ну, до этого t был не int в программе, вот и уточняю на всякий пожарный…
Sasha-Flyer
0
комменты Октавиана попытаюсь таким способом вытащить? :D
Прошу прощенья, почтенный сэр, но что ж с оными не так?
Octavian
+1
Их много.
Sasha-Flyer
+1
Хм. Возможно.
Octavian
+1
Но по-идее программа должна справиться и с тобой. Табун вроде не банит по айпи, если несколько минут отправлять запросы через пол секунды. Но для надежности твои комменты лучше индексировать по кускам…
Sasha-Flyer Изменён автором
+1
Без введенья пароля и обращения своего взора в сторону закрытых блогов считывание вполне проходит нормально, хотя бы и затрачивает немало времени. Кроме того, надлежит отметить, что мне в определённом смысле по нраву дизайн.
Octavian
+1
Дизайн самый обычный, консольный же.
В следующие разы я уже буду пытаться осваивать интерфейс. В дальнейшем мне без него никуда.
Sasha-Flyer
+1
Ваша точка зрения принимается к сведению. Как и планы.
Я очень рад, что вы нашли для себя ещё один достойный интерес.
Octavian
+1
Забавно, я для теста программы решил как раз проверить комментарии Октавиана.
Necto
+2
Блин, надо бы всё это дело проиндексировать, чтоб быстрее искалось, а то получается я реально дудосю Табун хД
Sasha-Flyer
+1
Меня банило когда в 5 потоков статистику собирал. А в 1 поток много не надудосишь.
zluka
+2
То есть скачивать хтмл раз в пол секунды это нормально?
Sasha-Flyer Изменён автором
+1
Каждый день так делаю по 800 запросов.
zluka
+2
Хех, ок.
Sasha-Flyer
+1
Весьма оригинальный способ измерения времени без `import time`, лул.
Wolfram
+1
`

#орхизапилимаркдаун?
andreymal
+2
#флаерпочинитабунтыжетеперьпрограммист
brass-cheetah Изменён автором
+3
Я только начинаю всё это осваивать… Тем более Андрей уже давно всё починил, а Орхи просто не хочет выкатывать уже полностью готовый и протестированный апдейт.
Sasha-Flyer
+1
Тем более Андрей уже давно всё починил
Это правда? Просто в репозитории Табуна ничего об этом нет.
Farxial Изменён автором
+2
Ща как возьму и обижусь)
andreymal
+2
А, да… Речь же была просто о Табуне, а не о аватарках
Сорри
Farxial Изменён автором
+1
Кстати, Флудер, а откуда ты у меня в ВК в друзях? 6_9
stalnoy_brony
+1
Это многое может значить...)
Sasha-Flyer
+1
… но ничего хорошего точно.
Necto
+2
Я, когда сходку оргал, его звал
На них он всё равно не ходит — ибо «все парни, их посещающие, заняты»
stalnoy_brony
+2
не ходит — ибо «все парни, их посещающие, заняты»

Но ведь на сходки идут не ради этого…
Necto
+2
Я его цитировал
stalnoy_brony
+1
Это мне понятно. Мне не понятно, почему он думает, что на сходках можно только искать парней.
И тут я вспомнил, что ни разу не был на сходках и мои слова- пустой звук
Necto
+1
Ухты, Флаер начал чем-то полезным заниматься.
Rain_Dreamer
+2
Видимо в психушке ему мозги вправили, кек=)
ovnd
+1
А он там был разве?
Rain_Dreamer
+2
brass-cheetah
+1
Так или иначе, начал заниматься чем-то продуктивным, что похоже на преодоление личных кризисов. Если так, то это радует, без шуток.
brass-cheetah
+1
Nox за 56 коммент(ов) написал 1253 слов(а) в топике 'Первый забег осеннего «Турнира Юных Писателей» считать закрытым', получив за это 52
Всего слов: 134028, всего плюсов в Ваших комментах: 8967

Забавно :)
Nox
+1
Удивило кол-во файлов в архиве. Оконный интерфейс не нужен особо, конечно, но вывод отдельной строки на каждое «осталось n секунд» выглядит действительно так себе.
А результаты удивили, пойду проверю.
Rain_Dreamer
+1
И правда, тот срач про стальные крылья достаточно достойный, чтобы быть моим первым постом по кол-ву слов и комментов.
Rain_Dreamer
+1
Занятно.
Dany
+1
Ну вот, а говорил, что бесполезен и ничего не умеешь — а запилил полезный инструмент.

Я, допустим, вообще на Python работать не умею — языки без строгой типизации мне не даются :-(
NTFS
+1
Прикольно. Флаер порвал шаблон.
nicklaich
+1
Проверил, работает, круто чо!
Только в тхт к именам постов ещё и ссылки неплохо бы сделать — для более-менее оперативного доступа.
brass-cheetah
+1
В тхт вроде низзя гиперссылки.
Sasha-Flyer
0
Гипер — нельзя, просто ссылки — а чё нет-то
andreymal
+2
Даже если это будут просто ссыли в виде текста — уже удобно будет. Только лишь по названиям добираться до всяких древних постов, особенно в закрытых блогах, трудновато — учитывая что табунский поиск не работает, а гугл выдаёт только результаты с открытых блогов.
brass-cheetah
+1
А вот если запилить оконный интерфейс, можно сделать симпатичные ссылочки прямо там.
Rain_Dreamer
+1
Буду разбираться потихоньку в интерфейсе. Даже не знаю, какую библиотеку выбрать для этого… столько всего… мб вообще pygame?))))
Sasha-Flyer
0
С питоном разбираться так и не начал, но поидее там то же что и в джаве.
Rain_Dreamer
+1
Ну попробуй tkinter, она всё-таки в стдлибе. Pygame кажись для третьего питона толком не поддерживается.
Wolfram
+1
Во, точно, в питоне я окна именно ткинтером делал.
Rain_Dreamer
+1
Насколько полной является инфа вот тут? metanit.com/python/tutorial/9.1.php (там несколько страниц, не только эта ссылка)
Sasha-Flyer
0
Для простейших интерфейсов инфы явно достаточно, а полную инфу ты только в документации найдёшь (и в которую всё равно не эффективно сразу заглядывать, пока туториал не прочитаешь какой-нибудь).
Wolfram
+1
пока туториал не прочитаешь

Ну вот такой туториал, который я скинул, сойдет за туториал?
Sasha-Flyer
0
Окей, в самом главном разобрался, остался вопрос в оформлении...
Sasha-Flyer
0
Кнопку чуток отцентрируй ещё и пропиши названия полей.
Rain_Dreamer
0
Уже всё сделяль, проверь шапкую
Sasha-Flyer
0
Все клево, ща чекну саму прогу.
Rain_Dreamer
0
Чувак. вопрос. Неужели программа настолько требовательная, что требует 64-битную ОС?
Да, на рбочем ПК всё ещё 32-битка
western01
+1
ХМмм… Я компилировал на х64, а как сделать отдельно на х32 — пока не знаю…
Sasha-Flyer
0
Неужели кто-то настолько слоупок, что в 2018 году использует не 64-битную ОС?)
andreymal
+3
Да, на рабочем ПК всё ещё 32-битка
western01
+1
Во-первых, здесь определённо надо что-то менять — или ОС, или ПК, или работу
Во-вторых, зачем запускать сабж на рабочем ПК?)
andreymal Изменён автором
0
авдругвирусы, а дома виртуалки нету
western01
+1
Зачем мне делать вам вирусы?..
Sasha-Flyer
0
чтобы плюсавало тебя без нашего ведонтома.
так. сова. опять взламываешь
western01 Изменён автором
+1
Хееех… А это идея)
Sasha-Flyer
0
32-битная ОС жрет меньше памяти и лучше поддерживает старые приложения, которые всё еще бывают нужны.
ОС — инструмент, а инструмент выбирают по целям, а не опираясь на год :-)
NTFS
+2
Неужели кто-то настолько слоупок, что имеет меньше 4 гигов памяти в 2018 году?
Неужели есть приложения, не работающие в 64-битных ОС?
andreymal
0
Да.
Да.
По последнему, правда, всегда можно использовать эмуляторы или виртуальные машины, но зачем, если от ПК нужен только OpenOffice, Delphi и Visual Studio?
NTFS Изменён автором
+2
OpenOffice, Delphi и Visual Studio
Что-то из этого не работает в 64-битной ОС?
Delphi
Lazarus?
andreymal
+1
Что-то из этого не работает в 64-битной ОС?

С Turbo Delphi 2006 у меня были проблемы. Решил, но бубен весь истрепал.

Lazarus?

При всём уважении к этому проекту, пока FreePascalCompiler не начнет ловить Exception внутри dll — я на нём только старые проекты поддерживаю.
NTFS
+1
Короче ты сплошное исключение из правил)
andreymal
+1
Просто я не могу позволить себе с радостным криком каждый раз ставить самые новые приложения и новые среды разработки — есть люди, которые мне платят за поддержку разработок с 2005-го года, зачем их огорчать?
NTFS
+1
Офигеть… Вот бы мне быть таким тру-программистом с таким стажем.
Sasha-Flyer
0
У тебя еще всё впереди.
NTFS
+1
Мне уже 20 лет и я только начал этим заниматься. Боюсь уже слишком поздно(
Sasha-Flyer
0
Двигающийся обгонит стоящего — а я сейчас гораздо чаще топчусь на месте ради текущего куска хлеба.
NTFS
+1
уже 20 лет
всего 20
тем более сейчас у людей все возможности быстро развиваться, быстро получать информацию
и долго жить
Dany
+2
два месяца назад купил новый ноут, там было 2 гига.
64 битка по-дефолту поддерживает 32-х битные приложения, емнип.
nicklaich Изменён автором
+1
Новая версия отлично работает, спасибо.
Как ещё одна идея — можно сделать прямо в окне скроллящийся контейнер с результатами поиска.
Rain_Dreamer
+1
Кстати, неожиданно
Rain_Dreamer
+1
Какая именно строчка Вам кажется неожиданной?
Necto
+1
Намного более положительные оценки чем сейчас, при том что это старый аккаунт (2014-2016).
Rain_Dreamer
+1
Кстати, раз уж у тебя уже не одна версия, советую ознакомиться с гитом, для такого маленького скрипта, может, VCS и не особо нужны, но на будущее может пригодиться)
Wolfram
+1
Готовься объяснять, нафига хранить старые версии)
andreymal
+1
Это не так обязательно: вляпается в говно — вспомнит мой комментарий)
Wolfram
+1
Я не такой тупой… D:
Я удаляю только самые бесполезные коды, на которые даже стыдно смотреть.
Sasha-Flyer
0
Я использую SVN, но в целом, удваиваю пост выше — управление версиями вещь очень полезная для разработки.
NTFS
+1
Неужели кто-то настолько слоупок, что использует SVN?...)
andreymal
0
Да. Не вижу смысла переносить многолетние репозитории на другую систему.
NTFS Изменён автором
+1
Недавно же был прикол, что разрабы WebKit подорвались на попытке загрузить гугловые пдфки с одинаковым SHA-1 в свой SVN-репозиторий, так что, да, ещё как используют) А у гита свои недостатки есть, чо уж там. Не очень-то эффективный расход памяти, например. Но для новичка с него имеет смысл начать хотя бы потому, что проектов на гите сейчас гораздо больше, т.е. вероятность, что интересная тебе вещь будет хоститься на гите, повыше.
Wolfram
+1
Линус вроде обещал поменять SHA-1 на что-то другое
Не очень-то эффективный расход памяти, например.
Расскажи это майкрософту, хранящему всю винду в одном гит-репозитории)
andreymal
0
А потом найдут коллизию от другого алгоритма и кто-нибудь попытается загрузить в репозиторий другую коллизию
Farxial
+1
Да что там коллизии, сейчас в 99% процессоров вон память ядра утекает… Мы все умрём, го в бункеры
andreymal
+2
Го
Farxial
+1
И что вы там будете делать?)
Sasha-Flyer
0
А почему вы спгашиваете?
Wolfram Изменён автором
+1
Мб я тоже захочу вместе с ними что-нибудь поделать?)
Sasha-Flyer Изменён автором
0
Минет?)))
Breezybka
-4
Ну и его тоже можно, почему бы и нет?
Sasha-Flyer
-3
А глубоко можешь?
Breezybka
-4
Это от многого зависит. Если у тебя там 25см то конечно не смогу.
Sasha-Flyer
-3
Ну… Флудить?
Farxial
+1
Пффф скучно
Sasha-Flyer
0
Всё не так просто, это в SVN был косяк, что там хэш считался напрямую от файла, а гит прибавляет спереди `'blob'+len(file)`, и только потом считает хэш, так что для его обвала нужно конкретно атаковать гит, а не просто создать два равнохэшевых файла.
Wolfram
+1
А, точно, я ступил
Farxial
+1
Расскажи это майкрософту, хранящему всю винду в одном гит-репозитории)
А можно ссылку на этот репозиторий?
Farxial
+1
Стань сотрудником майкрософта и/или подпиши все нужные NDA — тогда, возможно, поделятся)
andreymal
+1
Но ты говоришь об этом так, будто сам знаешь. Очевидный вывод из этого — ты сам работаешь в Microsoft. Следовательно, можно просить у тебя  Ну, если ты не хочешь давать это без подписания NDA (блин, не понимаю, зачем они вообще нужны работникам), то увы, конечно… Но, спросив, я хотя бы попытался
Farxial
+1
А я не считаю Git идеальным, но свою задачу он более-менее выполняет. А главное, нынче он популярный и модный, подобно торрентам. Так что норма, если у проекта, если он с открытыми исходниками, есть общедоступный репозиторий. А поскольку так популярен именно Git, получается, что и проекты должны быть на Гитхабе в Git. Если личный, то можно тоже иметь для него репозиторий, локальный.
К сожалению, ложку дёгтя вносит сообщество, вынуждая программистов придумывать сообщения к коммитам, будто ты не программист, а поэт, и должен писать не код, а комментарии в нём коммит-сообщения. Но лично я просто положил на это и у меня в моих локальных хеловорлдах автоматом при каждой компиляции сообщение «Update» (и иногда ручные коммиты; ещё я просёк, что с --allow-empty можно добавить к предыдущему коммиту комментарий без замены коммита, иногда это лучше, чем --amend, и чисто для себя вполне годится). А если когда-нибудь буду заливать свой говнокод в Инет (т.е. если вообще когда-нибудь его допишу ), то можно будет заливать в Инет только ветки с релизом, а ветки с коммит-на-компиляцию оставить на локальном компе. Так что тут всё зависит от подхода к вопросу. Можно использовать Git просто для удобства (а иметь возможность знать, что было с кодом некоторое количество времени или версий назад (версии — если ставишь Git-теги, например), удобно), испытывая меньше неудобств, чем кажется на первый взгляд.
Farxial
+1
Неужели так трудно писать сообщения хотя бы вида «Add that feature», «Fix typo» и подобных сестёр таланта?

А нафига коммитить при компиляции?
andreymal
+1
Если ипользовать коммиты общепринятым образом, то можно написать и нормально. Но тогда ведь можно вообще ничего не коммитить  Нуачо, я ещё не сделал того, что вообще работало бы на приемлемом уровне — «that feature» от чего?
И ещё проблема (я уже когда-то упоминал о ней)… Когда коммитишь, надо выбирать, что именно ты коммитишь, чтобы действовало правило «коммит на логически цельное изменение». Т.е. если, допустим, я изменяю код, а потом заметил, что где-то нет отступа или есть лишний пробел — мне что, сначала поменять всё остальное, потом закоммитить, а потом сделать норм отступ/пробел и сделать отдельный коммит? Но зачем, если можно исправить это сразу? Это, к сожалению, может быть нужно при групповой разработке (если ты хочешь, чтобы твои коммиты выглядели как можно лучше). Но при локальной этим можно не заморачиваться. При локальной разработке имеет смысл заморачиваться если и тебе самому так будет удобнее.
А знаешь, для локальной разработки очень не помешала бы утилита, висящая небольшим top-окном и вызывающая при действии со стороны юзера закоммичивание с предопределённым набором сообщений, желательно ещё получающая информацию о изменяемых строках (например, в Notepad++ можно сделать слева отображение номера строки, а в заголовке окна — полный путь к файлу) и закоммичивающая только то что нужно

Просто чтобы была как можно более полная история изменений  Правда, это всё-таки более редкие коммиты, чем при каждом изменении файла. Но, с другой стороны, можно добавить к сообщению о коммите, нормально ли компилится и выполняется (если есть соответствующие юнит-тесты) или с ошибками (но этого мя у себя пока так и не сделал).
Farxial
+1
Т.е. если, допустим, я изменяю код, а потом заметил, что где-то нет отступа или есть лишний пробел — мне что, сначала поменять всё остальное, потом закоммитить, а потом сделать норм отступ/пробел и сделать отдельный коммит? Но зачем, если можно исправить это сразу?
Щито? Ну заметил, поправил, закоммитил вместе с другими изменениями — чо такого? При групповой разработке по коду точно будут проходиться линтером, и таких проблем в принципе не будет.
Wolfram
+1
Потому что коммиты читают люди, и не оч круто, когда в комплекте с изменениями, относящимися к работе программы, идёт всякий мусор. Это не мусор для специального коммита, цель которого — заключить в себя эти самые изменения.
Требовать такого подхода от других я, конечно, не могу, но самому мне не оч приятно так делать. (Пока по моему коду не начали проходиться линтерами )
Farxial
+1
Ну это можно и отдельным выносить, конечно, типа fix typo, чтобы не было в одном комплекте.
Wolfram
+1
Ну вот.
Farxial
+1
Что «ну вот»? Отправляешь текущие изменения в git stash, коммитишь исправление опечатки, возвращаешь старые изменения, допиливаешь, мёржишь ветки — по-моему, примерно так это по идее работает, хотя вообще у меня таких проблем не возникало.
Wolfram
+1
Да, когда мне надо сделать дофига всего, мне же только и надо заниматься тем что сохранять изменения в git stash, добавлять изменения, которые надо закоммитить сейчас, создавать коммит, вручную набирая сообщение коммита (или копируя откуда-то, но до этого места надо будет сначала добраться, т.е. сделать ещё несколько нажатий мыши/клавиатуры), и возвращать старые изменения, по ходу ловя в Notepad++ уведомления о изменениях файлов (а они в какой-то мере удобны, так что отключать их не нужно). А перед смерживанием веток произойдёт ещё овердофига повторов этой ситуации.
Мб просто ты занимаешься более полезной формой разработки (нужно → просто взял и сделал), а не как я
Farxial Изменён автором
+1
Если у тебя именно ситуация с опечатками много раз повторяется, то имеет смысл поправлять коммит с исправлением опечаток, а не создавать новый (а так же пользоваться линтером и спеллчекером прежде чем коммитить, хех). Если там какие-то существенные для логики кода хот-фиксы, то не вижу ничего проблематичного в том, чтобы их кратко описывать в сообщении, добавляя новый коммит в основную ветку. Потом по ним же легче будет отследить, где какое изменение в логику внесено.
Wolfram Изменён автором
+1
Только я не создаю коммиты вручную — я просто запускаю скрипт создания коммита или скрипт компиляции + создания коммита. OK, значит мне нужен скрипт, который будет смотреть, что я коммичу, и при необходимости создавать 2 или более коммитов. Но мне лень его делать

Так их, прежде чем будет что-то сделано, будет ещё овердофига внесено.
Farxial Изменён автором
+1
Скрипт создания коммита? Это же по идее одна команда. Тем более что все равно надо вводить текст коммита.
lunavod
+1
Самый простой вариант
git add -A
git commit -m Update

Вариант посложнее — с добавлением списка файлов, которые коммитятся (а также созданием 1-го коммита)
Тут я вообще использую Git не для разработки, а в личных целях, так что читающим это просьба сильно не бить
...
os.system(git_exe+" add -A")
global is_initial_commit
if is_initial_commit:
	os.system(git_exe+" commit -m \"Initial commit\"")
	is_initial_commit = False
else:
	file_list = subprocess.check_output(git_exe+" diff --name-only --cached", shell=True).decode("utf-8").strip()
	os.system(git_exe+" commit -m \"~ "+file_list.replace("\n", ", ")+"\"")
        ...
Farxial Изменён автором
+1
А, ну, про add забыл, я добавляю сразу из IDE. Но коммитить с сообщением Update — как-то фу на мой взгляд. В коммите должно быть нормальное описание, что именно изменено. Я из подобного разве что коммиты с сообщением fix делаю, когда относится к предыдущему коммиту и подробнее описывать по сути нечего. Как по таким коммитам, собственно, искать? Это надо для каждого коммита смотреть файлы. А обычно сразу из названия понятно.
lunavod
+2
Речь о исключительно локальной разработке, ну  Да, искать неудобно, но
1. Это уже мои личные проблемы
2. Искать вообще-то нечего
Farxial
+1
Ну, а то при локальной разработке не используется поиск и история вообще. Как по мне так это важно всегда. Это история разработки, поиск и все такое прочее.
lunavod
+1
Ну, а что там писать в сообщениях? Я же, если накосячу, не замечу этого (а если замечу, то и комментить нечего) и не напишу в сообщении о коммите, что вот тут я накосячил. И всё равно придётся искать, перечитывая изменения в коммитах.
Farxial
+1
Так а при чем тут косяки? Просто описывать, что именно в этом коммите. Когда ты работаешь в общих репах, ты же пишешь нормальные сообщения.
lunavod
+1
А зачем?
Потому и пишу нормальные сообщения, что работаю в общих репах :3
Farxial
+1
Это история разработки, поиск и все такое прочее.
lunavod
+1
Основная история — в изменениях в файлах, их создании и удалении, переименовании/перемещении и изменении их mode.
Farxial Изменён автором
+1
Но ведь, когда нужно найти какое-то конкретное изменение в файле, искать по описанию намного проще! Особенно если это удаление и git blame ничего не покажет
andreymal
+1
Может и проще, но для этого придётся постоянно писать сообщения к коммитам, тогда как найти какое-то конкретное изменение может быть нужно редко. Если бы это нужно было часто — другое дело.
Farxial
+1
… может и безопаснее, но для этого придётся постоянно оснащать автомобили ремнями и подушками безопасности, тогда как аварии случаются редко, а отдельно взятый автомобиль может вообще ни разу не попасть в ДТП...)
andreymal
+2
Оснащением автомобилей ремнями и подушками безопасности занимаются при производстве автомобилей, этим занимаются не пользователи. А призводитель производит автомобили не для себя, а для других, так что тут всё так, как и должно быть.
Farxial
+1
… может и безопаснее, но для этого пользователю придётся постоянно пристёгивать ремень безопасности...)
andreymal
+2
А вот это уже неудобно. Но ведь жизнь и здоровье имеют большое значение, не так ли?
К тому же, сама поездка на автомобиле такая ресурсоёмкая — надо соблюдать скорость, останавливаться на светофорах, иногда стоять в пробках, иногда заправлять автомобиль и т.д. Пристёгивание ремня здесь погоды не делает. А как на счёт дофига часто писать сообщение к коммиту? Хотя тут всё зависит от того, как часто делать коммиты… Ну, конкретно мне, при моих обстоятельствах, это не подходит
Farxial Изменён автором
+1
Да какие там обстоятельства, так рассказываешь, что аж интересно стало!
Wolfram
+1
Farxial
+1
git add -A
git commit -m Update
==
git commit -a -m Update
Wolfram
+1
OK, спасибо, учту
Farxial
+1
Решил немного почитать мануал… Дочитал до
Добавление параметра -a в команду git commit заставляет Git автоматически индексировать каждый уже отслеживаемый на момент коммита файл, позволяя вам обойтись без git add:
git-scm.com/book/ru/v1/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git-%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9
Проверил — «git commit -a» не добавляет автоматически все новые файлы. Хотя в моём случае нужно, чтобы все новые файлы добавлялись автоматически.
Farxial
+1
Фаркси, насколько ты шаришь в многопоточности?
Sasha-Flyer
+1
Трудно сказать. С одной стороны, понимаю основы. С другой, я мало чего с ней кодил (но я вообще мало чего кодил). Так что нужен более конкретный вопрос.
Вангую, однако, что тебе нужна многопоточность в Python, а там с этим проблемы из-за GIL. Так что там надо использовать какой-то обходной манёвр, специфичный именно для Python.
Farxial
+1
Но даже в случае с GIL в Python важно, для чего тебе это нужно. Если я правильно понимаю, GIL только не позволяет по-настоящему распараллелить вычисления. Но если тебе надо просто разделить программу на независимые треды выполнения, то всё OK.


И надеюсь, что, в случае чего, меня поправят, да)
Farxial Изменён автором
+1
Мне нужно запилить интерфейс в один поток, а загрузку и парсинг страниц — в другой…
Sasha-Flyer
+1
Чтобы не париться, в питоне не используй потоки (как раз из-за вышеупомянутого GIL), используй процессы с помощью модуля multiprocessing. С помощью threading можно запросто получить как плюс, так и минус к производительности, так что с ним поаккуратнее.
Wolfram
+1
Вопрос остается прежним — как перекинуть интерфейс на один процесс, а загрузку и парсинг страниц — на другой… В попытках это сделать у меня всё ломается к чертям(
Sasha-Flyer
+1
Можешь скинуть в ЛС код, в котором всё ломается?
Farxial
+1
Он же в посте, интерфейс намертво виснет пока очередная страница комментов грузится
andreymal
+1
А, если имелся в виду код попытки это сделать, тогда не в посте, ладно
andreymal
+1
git commit -a -m Update
==
git commit -am Update

У тя целых 2 лишних символа!111
zluka
+1
alias c="git commit -am" чо уж
andreymal
+1
Здравствуйте, это сайт про пони? Расскажите, чем гит лучше меркуриала?
narf
+1
Сначала прочитал как «Счетчик Флаера»… Хм, а ведь не далеко от истины…
Aizek_Snow123
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать