...
Just my blog

Blog about everything, mostly about tech stuff I made. Here is the list of stuff I'm using at my blog. Feel free to ask me about implementations.

Soft I recommend
Py lib I recommend

I'm using these libraries so you can ask me about them.

"Output" за год Python

Фиг знает, когда там принято делать выводы за год, я сделаю их сегодня. Screenshot_13 Ровно год назад, я поменял проект с простого сапорта виндовых серверов, на какой-то мудреный девелопмент-недопрограмминг. Для общего понимания читателю, если он читает - я ничего не смыслил в таких словах из программирования как: функция, переменная, стринги, интеджеры. То есть я как-бы основные понятия знал, даже что-то ковырял и делал на уровне сайта и 'php' (прости господи), но если я слышал, например слово "декоратор функции" или "лямбда функция" - я просто делал вид, что думал о чем-то более важном. Так вот, поставил я себе задачу, выучить этот ваш "Python" - задачу все еще выполняю, но мне кажется, я заслужил  на то, чтобы отметить один пройденный этап. Не смотря на все злоключения и лень поганую, честно признаться, на само изучение я потратил не больше двух месяцев, первый мой прорыв был еще в мае, когда я попытался сделать считалку репостов вконтакта + рандомилку, и вышло некое УГ, в котором я списки переводил в строки и потом удалял оттуда "лишние знаки". Думал вначале не показывать, но на ошибках учатся, так что покажу.

with open('test.html', 'r', encoding='utf-8') as content_file:
    read_data = content_file.read()

from html.parser import HTMLParser
import re, sys

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        vk_id = str(attrs)
        for line in vk_id:
            vk = re.findall('/\S+$', vk_id)
        vk_fnd = str(vk)
        if re.search('/\w+\'\)\]', vk_fnd):
            global vk_read
            vk_read = vk_fnd
            for ch in ['/', ')', '[', ']', '"', "'"]:
                if ch in vk_read:
                    vk_read = vk_read.replace(ch, "")
    def handle_data(self, data):
        global vk_name
        vk_name = str(data)
        for line in vk_name:
            if re.match('\S+\s+\S+$', vk_name):
                for ch in ['\u0456', '\u0406']:
                    if ch in vk_name:
                        vk_name = vk_name.replace(ch, "?")
                print("@{0} - {1}".format(vk_read, vk_name))
                break
parser = MyHTMLParser()
parser.feed(read_data)

Вот на такой кусочек Гэ я потратил 4 дня, после понял, что это стыд, но первые несколько дней я очень собой гордился. На этом мои практические задания по коду закончились, аж до осени. Если бы я был писателем и писал бы я на Python, то непременно сказал бы, что осенью меня посетила муза и я начал "сочинять". Так родились простейшие вещи вроде:

  • поздравление подписчиков\друзей с "Днем рождения" в автоматическом режиме;
  • составление прогноза погоды по xml от погодного сервиса, с неколькими улучшениями:
    • подставляет картинку по-погоде
    • подставляет список песен по погоде (случайным образом и списков подготовленных песен для каждого погодного состояния)
  • второй погодный бот - был обучен делать "погодную угадайку", предлагая список из 4-х песен, каждая из которых соответствует предполагаемому статусу погоды на утро, день, вечер, ночь;
  • переработанный рандомайзер - который теперь не переводит списки в строки =) а просто выдает случайный айди страницы, на входе ему достаточно просто дать ссылки на необходимые посты, работает в вебе;
  • напоминалка о предложке - штука, проверяющаю есть ли че в предложке, и если есть - создает по посту для каждого паблика, где в предложенных новостях что-то было найдено + айди админа, отвечающего за этот паб;
  • стена позора - прожка которая собирает всех забаненных в сообществе юзеров, достает причину бана и время разбана, собирает списки, сует список в таблику wiki и шлет на стену с постом и ссылкой на оную.

И наконец, первое, стоящее чего-то кодинговое создание, которое пока собрано, менее чем на 1/10 - но символизирует мою победу над самим собой - считалка рейтинга. Сути раскрывать не буду, потому как не вижу смысла описывать то, что еще не создано, вдруг конечный результат получится другим. По существу считалка сейчас умеет:

  • брать посты из ВК и сохранять их в базу
    • приходится делать сдвих по 100 постов за проход
  • для каждого поста собирать его инфо о лайках, комментах, репостах
  • доставать все комменты из под каждого поста
    • проход по 100 за раз
  • сохранять все комменты в таблицу
  • сортировать и выдавать комменты сгруппировав по айди автора со счетчиком лайков(всего) и кол-ва записей(всего)
  • вычислять средние значения для кол-ва комментов и лайков
  • сортировать список диктов по ключу со значением рейтинга
  • делать таблицу рейтинга

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