1. Избавление от вредных привычек
2. Постоянное обучение
Вредные привычки
Из вредных привычек у меня: бездумный скролинг, “эмоциональное питание”, мастурбационная зависимость.
Скроллинг - это листание ютуба, телеги, имиджборд, ну вы поняли.
“Эмоциональное питание” - это заказ вредной еды, когда не очень хорошо себя чувствую.
Про третье вы сами знаете.
Избавляться буду очень простым методами - stimulus control и exposure and response prevention (https://www.linkedin.com/pulse/dopamine-fasting-new-silicon-valley-trend-dr-cameron-sepah). Длительность - две недели.
Запрещено все, где можно выключить мозг и скроллить.
По будням разрешено: 1 фильм.
По выходным: еще не знаю.
Из музыки только: классика, амбиэнт, хаус. Лоуфай был бы тут идеален, но я его ненавижу.
Питание без Фаст фуда, собственно приготовленное или покупное - пока что без разницы, но хотелось бы конечно перейти на первое.
Фап только раз в неделю и именно в пятницу-воскр.
Думаю, со скроллингом будет не очень сложно, так как из-за работы я уже больше месяца не особо часто скролю - я либо работаю, либо общаюсь с коллегами. Скролинг начинается только когда прихожу домой (~19:15), и на выходных.
С нормальным питанием и ограниченным фапингом справиться будет сложнее.
Постоянное обучение
Планов много. Пока что напишу про два:
1. Контрибьютнуть в Django. Для этого нужно знать все с пикрила. Также пикрил нужен для работки, поэтому тут двойная выгода.
2. Решать алгосы. Нужно только для работки, но иногда бывает весело (но чаще всего очень уныло)
>:(
>Думаю, со скроллингом будет не очень сложно
В итоге было сложно, хотя я более-менее продержался, проебавшись только по пункту музыка. Думал, что можно включить нормальную, а не бэкграунд парашу со спотифай плейлистов, но оказывается нет - если без музыки сложно делать таск, то слушать ее нельзя. Будет очень сложно отказаться от этого, но да ладно.
По полезным таскам - я пытался в туториал дрф, но слишком сложно шло. Потом пошел читать Моби Дика, но слишком много отвлекался. В итоге ничего такого не поделав, уснул. Как проснулся почему-то захотел посмотреть алгосы. В итоге нормально посмотрел про Серпинский треугольник и размен денег.
Про Серпинский треугольник решил посмотреть, потому что меня года/лет 4-5 назад эта задача сильно заинтересовала. Кажется, она была одной из моих первых алгоритмических задач. Долго над ней думал и так не понял как решить, а потом посмотрел решение и тоже не понял. Из-за этого запало в памяти. Сейчас посмотрел решение, какое же оно простое, если понимать рекурсию. Я даже захотел переписать его на С++, но у первой нагугленной 2D либы cairo не было бинарников для ARM, а опыт с линкованием С/С++ либ отбил желание искать что-либо дальше. Может быть на следующей неделе перепишу на SDL, или чем там пользуются геймдеверы.
Код: https://runestone.academy/runestone/books/published/pythonds/Recursion/pythondsSierpinskiTriangle.html
Задача с разменом денег оказалось интересной. https://runestone.academy/runestone/books/published/pythonds/Recursion/DynamicProgramming.html
Первое решение, которое пришло в голову на пикреле. В книге решили по другому, но решение одинаково уебищное. ~10 секунд для инпута 63 на моем писи. Не смог нормально внедрить мемоизейшн в свое решение, вот я дэбил. Решение с последовательным вычислением правильного ответа для каждого инпута от 0 до n было интересным.
Вообще, очень яро ненавидел ДП так как не мог их решать. Но в какой-то момент кликнуло, что это рассмотрение всех возможных вариантов после каждого шага через рекурсию, и стал ненавидеть меньше. Есть задачи нерешаемые этим методом. Если их разобрать, то ненависти больше не останется.
>Думаю, со скроллингом будет не очень сложно
В итоге было сложно, хотя я более-менее продержался, проебавшись только по пункту музыка. Думал, что можно включить нормальную, а не бэкграунд парашу со спотифай плейлистов, но оказывается нет - если без музыки сложно делать таск, то слушать ее нельзя. Будет очень сложно отказаться от этого, но да ладно.
По полезным таскам - я пытался в туториал дрф, но слишком сложно шло. Потом пошел читать Моби Дика, но слишком много отвлекался. В итоге ничего такого не поделав, уснул. Как проснулся почему-то захотел посмотреть алгосы. В итоге нормально посмотрел про Серпинский треугольник и размен денег.
Про Серпинский треугольник решил посмотреть, потому что меня года/лет 4-5 назад эта задача сильно заинтересовала. Кажется, она была одной из моих первых алгоритмических задач. Долго над ней думал и так не понял как решить, а потом посмотрел решение и тоже не понял. Из-за этого запало в памяти. Сейчас посмотрел решение, какое же оно простое, если понимать рекурсию. Я даже захотел переписать его на С++, но у первой нагугленной 2D либы cairo не было бинарников для ARM, а опыт с линкованием С/С++ либ отбил желание искать что-либо дальше. Может быть на следующей неделе перепишу на SDL, или чем там пользуются геймдеверы.
Код: https://runestone.academy/runestone/books/published/pythonds/Recursion/pythondsSierpinskiTriangle.html
Задача с разменом денег оказалось интересной. https://runestone.academy/runestone/books/published/pythonds/Recursion/DynamicProgramming.html
Первое решение, которое пришло в голову на пикреле. В книге решили по другому, но решение одинаково уебищное. ~10 секунд для инпута 63 на моем писи. Не смог нормально внедрить мемоизейшн в свое решение, вот я дэбил. Решение с последовательным вычислением правильного ответа для каждого инпута от 0 до n было интересным.
Вообще, очень яро ненавидел ДП так как не мог их решать. Но в какой-то момент кликнуло, что это рассмотрение всех возможных вариантов после каждого шага через рекурсию, и стал ненавидеть меньше. Есть задачи нерешаемые этим методом. Если их разобрать, то ненависти больше не останется.
Детокс:
кажется все было ОК. Единственная проблема - это музыка. Но думаю пару часов в день норм.
Работа
На работке ничего не делал, только болтал с коллегами. Мне она уже давно не очень нравится, так как я из единственного фулл стэкера в тиме превратился в "тех Лида", а моей старой деятельностью занялись отдельные фронтер и бэкер. С тех пор я начал чувствовать, как будто я ничего не делаю. Мэнеджить людей не особо нравилось, поэтому я занимался этим по минимуму, в основном я просто превращал бизнес задачи в технические таски. Но в последние месяцы мы перешли с удаленки в офис и я перестал создавать таски, вместо этого начав заниматься какой-то херней, типа написанием мини ТЗ, дониманием косячников вопросами о том, когда будет готов <таск>.
После того, как я сообщил Барину о своем желании уйти, тот предложил через месяц перейти на позицию бэкера, при том с добавкой к зп на ~20к. Круто!, подумал я, но в итоге за месяц даже желание быть бэкером тут умерло.
Наверное, буду уходить, хотя работка принесла дисциплину в мою жизнь, и у меня есть сомнения на счет того, смогу ли я поддерживать ее самостоятельно.
Мини рисерч на дофамин
После работки из-за спора с коллегами решил поподробнее посмотреть про дофамин и этот dopamine detox.
Понял не все, но из того что понял:
Дофамин - это нейромедиатор, участвующий во многих процессах головного мозга, включая движения и контроль лактации. Поэтому, допамин не стоит называть нейромедиатором радости. Другая причина почему его не стоит так называть - дофамин вырабатывается не после стимулирующего поведения, а до него, являясь эдаким мотиватором для получения награды.
Над мартышками провели эксперимент - когда загорался белый свет, они должны были потянуть рычаг и после этого им давали еду. Если бы дофамин был нейромедиатором счастья/радости, то он бы вырабатывался после получения еды, но у мартышек он вырабатывался сразу после загорания белого света. То есть дофамин мотивирует награда-ищущие действия путем создания желания (craving for unhealthy food is dopamine, enjoying unhealthy food is not dopamine). Если у мартышки заблокировать выработку дофамина, то она бы не стала делать задачу, даже зная о том, что ее ждет награда. Еще пример с онлайн играми: когда ты уже в тильте, ты знаешь что тебе будет так же плохо, если ты будешь продолжать играть, но ты все равно хочешь продолжать играть. В этом случае вырабатывается дофамин (ты хочешь играть), но не чувствуешь радости.
Дальше, в мозгу существуют 4 основных пути, по которым выработанный дофамин распространяется в разные участки мозга. 1 из них отвечает за движения (при болезни Паркинсона что-то не так в этом участке), 1 за лактацию, а оставшиеся два важны в нашем контексте, поэтому о них поподробней.
The mesolimbic pathway, sometimes referred to as the reward pathway, is a dopaminergic pathway in the brain. The release of dopamine from the mesolimbic pathway into the nucleus accumbens regulates incentive salience (e.g. motivation and desire for rewarding stimuli) and facilitates reinforcement and reward-related motor function learning; it may also play a role in the subjective perception of pleasure. The dysregulation of the mesolimbic pathway and its output neurons in the nucleus accumbens plays a significant role in the development and maintenance of an addiction.
The mesocortical pathway is a dopaminergic pathway that connects the ventral tegmentum to the prefrontal cortex[/I].
Prefrontal cortex (PFC) is the cerebral cortex which covers the front part of the frontal lobe. This brain region has been implicated in executive functions, such as planning, decision making, short-term memory, personality expression, moderating social behavior and controlling certain aspects of speech and language. The basic activity of this brain region is considered to be orchestration of thoughts and actions in accordance with internal goals.
Cогласно индусу с видеорелейтеда ниже, если после определенных раздражителей через mesolimbic pathway дофамин проходит слишком часто, то появляется зависимость и, самое главное, это влияет на mesocortical pathway, который отвечает за планирование и выполнение тасков без немедленной награды (учеба, подготовка к интервью, и т.д.). Я неуверен как работает механизм влияния одного пути на другой, но кажется он связан с частью мозга под названием Anterior cingulate cortex, который отвечает за распределение внимания. Индус твердит, что mesolimbic pathway может повлиять на ACC таким образом, что он будет распределять внимание только на low effort low reward таски (полистать телегу, ютуб, поиграть в онлайн игры, и т.д.).
Tl;dr части про дофаминовые пути:
Есть mesolimbic pathway, через который дофамин поступает на хуйню, которая вызывает радость, но от которой может появиться зависимость (скроллинг, наркотики, сладкая еда и т.д.).
Есть mesocortical pathway, через который дофамин поступает в префронтальную кору, который в свою очередь отвечает за планирование и выполнение долгосрочных тасков без немедленных поощрений (учеба).
Эти два дофаминовых путя каким-то образом “борятся” друг с другом. Чтобы избавиться от зависимости от соц. Сетей и скроллинга, надо чтобы выиграл mesocortical pathway.
Пока что это все что я нашел (нет, на самом деле еще кое о чем не написал, но кажется это будет лишним). Нужно доизучить про mesocortical и mesolimbic пути и про то каким образом люди теряют возможность делать то что надо и вместо этого делают то что хотят.
СУРСЫ не академические потому что я что еблан рыться в академических сурсах?:
https://www.reddit.com/r/explainlikeimfive/comments/251kby/eli5_the_difference_between_serotonin_and_dopamine/
https://sitn.hms.harvard.edu/flash/2018/dopamine-smartphones-battle-time/
https://www.youtube.com/watch?v=wK-s2qBU40A
https://www.youtube.com/watch?v=axrywDP9Ii0
Детокс:
кажется все было ОК. Единственная проблема - это музыка. Но думаю пару часов в день норм.
Работа
На работке ничего не делал, только болтал с коллегами. Мне она уже давно не очень нравится, так как я из единственного фулл стэкера в тиме превратился в "тех Лида", а моей старой деятельностью занялись отдельные фронтер и бэкер. С тех пор я начал чувствовать, как будто я ничего не делаю. Мэнеджить людей не особо нравилось, поэтому я занимался этим по минимуму, в основном я просто превращал бизнес задачи в технические таски. Но в последние месяцы мы перешли с удаленки в офис и я перестал создавать таски, вместо этого начав заниматься какой-то херней, типа написанием мини ТЗ, дониманием косячников вопросами о том, когда будет готов <таск>.
После того, как я сообщил Барину о своем желании уйти, тот предложил через месяц перейти на позицию бэкера, при том с добавкой к зп на ~20к. Круто!, подумал я, но в итоге за месяц даже желание быть бэкером тут умерло.
Наверное, буду уходить, хотя работка принесла дисциплину в мою жизнь, и у меня есть сомнения на счет того, смогу ли я поддерживать ее самостоятельно.
Мини рисерч на дофамин
После работки из-за спора с коллегами решил поподробнее посмотреть про дофамин и этот dopamine detox.
Понял не все, но из того что понял:
Дофамин - это нейромедиатор, участвующий во многих процессах головного мозга, включая движения и контроль лактации. Поэтому, допамин не стоит называть нейромедиатором радости. Другая причина почему его не стоит так называть - дофамин вырабатывается не после стимулирующего поведения, а до него, являясь эдаким мотиватором для получения награды.
Над мартышками провели эксперимент - когда загорался белый свет, они должны были потянуть рычаг и после этого им давали еду. Если бы дофамин был нейромедиатором счастья/радости, то он бы вырабатывался после получения еды, но у мартышек он вырабатывался сразу после загорания белого света. То есть дофамин мотивирует награда-ищущие действия путем создания желания (craving for unhealthy food is dopamine, enjoying unhealthy food is not dopamine). Если у мартышки заблокировать выработку дофамина, то она бы не стала делать задачу, даже зная о том, что ее ждет награда. Еще пример с онлайн играми: когда ты уже в тильте, ты знаешь что тебе будет так же плохо, если ты будешь продолжать играть, но ты все равно хочешь продолжать играть. В этом случае вырабатывается дофамин (ты хочешь играть), но не чувствуешь радости.
Дальше, в мозгу существуют 4 основных пути, по которым выработанный дофамин распространяется в разные участки мозга. 1 из них отвечает за движения (при болезни Паркинсона что-то не так в этом участке), 1 за лактацию, а оставшиеся два важны в нашем контексте, поэтому о них поподробней.
The mesolimbic pathway, sometimes referred to as the reward pathway, is a dopaminergic pathway in the brain. The release of dopamine from the mesolimbic pathway into the nucleus accumbens regulates incentive salience (e.g. motivation and desire for rewarding stimuli) and facilitates reinforcement and reward-related motor function learning; it may also play a role in the subjective perception of pleasure. The dysregulation of the mesolimbic pathway and its output neurons in the nucleus accumbens plays a significant role in the development and maintenance of an addiction.
The mesocortical pathway is a dopaminergic pathway that connects the ventral tegmentum to the prefrontal cortex[/I].
Prefrontal cortex (PFC) is the cerebral cortex which covers the front part of the frontal lobe. This brain region has been implicated in executive functions, such as planning, decision making, short-term memory, personality expression, moderating social behavior and controlling certain aspects of speech and language. The basic activity of this brain region is considered to be orchestration of thoughts and actions in accordance with internal goals.
Cогласно индусу с видеорелейтеда ниже, если после определенных раздражителей через mesolimbic pathway дофамин проходит слишком часто, то появляется зависимость и, самое главное, это влияет на mesocortical pathway, который отвечает за планирование и выполнение тасков без немедленной награды (учеба, подготовка к интервью, и т.д.). Я неуверен как работает механизм влияния одного пути на другой, но кажется он связан с частью мозга под названием Anterior cingulate cortex, который отвечает за распределение внимания. Индус твердит, что mesolimbic pathway может повлиять на ACC таким образом, что он будет распределять внимание только на low effort low reward таски (полистать телегу, ютуб, поиграть в онлайн игры, и т.д.).
Tl;dr части про дофаминовые пути:
Есть mesolimbic pathway, через который дофамин поступает на хуйню, которая вызывает радость, но от которой может появиться зависимость (скроллинг, наркотики, сладкая еда и т.д.).
Есть mesocortical pathway, через который дофамин поступает в префронтальную кору, который в свою очередь отвечает за планирование и выполнение долгосрочных тасков без немедленных поощрений (учеба).
Эти два дофаминовых путя каким-то образом “борятся” друг с другом. Чтобы избавиться от зависимости от соц. Сетей и скроллинга, надо чтобы выиграл mesocortical pathway.
Пока что это все что я нашел (нет, на самом деле еще кое о чем не написал, но кажется это будет лишним). Нужно доизучить про mesocortical и mesolimbic пути и про то каким образом люди теряют возможность делать то что надо и вместо этого делают то что хотят.
СУРСЫ не академические потому что я что еблан рыться в академических сурсах?:
https://www.reddit.com/r/explainlikeimfive/comments/251kby/eli5_the_difference_between_serotonin_and_dopamine/
https://sitn.hms.harvard.edu/flash/2018/dopamine-smartphones-battle-time/
https://www.youtube.com/watch?v=wK-s2qBU40A
https://www.youtube.com/watch?v=axrywDP9Ii0
Норм. Опять же, проблема с музыкой, только в этот раз я слушал ее весь день. Не хочется от нее отказываться, так как чувствую что без нее совсем ничего не смогу делать, но именно поэтому от нее надо отказываться :С
Обучение
Не знаю стоит ли считать это как за прокрастинацию, думаю нет, но я посмотрел пару лекций бородатого биолога с стэнфорда (https://www.youtube.com/watch?v=NNnIGh9g6fA)
Вроде хорошие лекции, но именно сейчас мне эти темы не очень интересны. Для себя вывел пару не особо важных вещей. Самое важное из этих не особо важных фактов - важность внутриутробного периода для ребенка. И про то, как люди путают биологические факторы с факторами окружающей среды, так как не учитывают то, что окружающая среда начинается с внутриутробного периода жизни.
Вообще, чуть ли не сделал сегодня только нужный минимум, но активировался ближе к вечеру и дописал мини рисерч на дофамин.
Вроде это нормально если я буду делать только нужный минимум на протяжении двух недель. Степ бай степ так сказать, а пока что работаю над привычками.
Недавно весил 80кг, аппер трешхолд нормального веса для моего роста - 69кг. Примерно с прошлой пятницы перестал ужинать и есть сладкое, вместо этого просто делаю перекус бананами и омлетом (жаренным, но я все жарю на оливковом масле). Еще я почти всегда на работу доезжаю на велике, но до прошлой пятницы это никакого эффекта на вес не давало. Сейчас я уже 78кг. За месяц скину до 69, чекайте.
Норм, но слушал слишком много музыки, где-то 4 часа.
Работка
Договорился об увольнении. 2 недельки буду доделывать ПМрские дела, потом ухожу, получив зарплату за пол месяца. Слегка обидно уходить как только повысили зп, при чем мне кажется в других компаниях мне такую дадут только через полгода-год работы. Но да ладно!
Похудение
не помню, кажется не взвешивался
Посмотрел шаолиньский футбол, 5/5, лайкнул.
Удовлетворительно. Было пару моментов, когда я скроллил телегу, но ничего страшного.
Работка
Сидел с пчелом, который делал махинации с миграциями на проде. У него был кое-какой план, который он несколько раз протестил локально. Только вот на проде план сразу же провалился. "А, ну ладно, тогда сделаю так". Но "так" он локально не тестил, поэтому на продовской бд исчезли часть данных за несколько месяцев. Ужас! но в итоге смогли все восстановить
Состояние
Ужасное, спасибо что спросили! Прет почти весь день, хотя я прием таблеток не пропускал. Надеюсь это скоро пройдет, ну или выльется во что-то полезное.
Посмотрел после работы Скорсезе, 2.8/5
а, вес был 77.7
Детокс
Смотрел ютуб и играл в игры. Не понравилось.
Похудение
76.2 было минимальным весом за прошлую неделю, сейчас вроде побольше. Завтра начну нормально замерять.
Учеба
Моим планом было взять академ и весь год хикковать, кодить, и готовиться к подаче на стажировки. Денег для этого я накопил. Немного, но на год должно было хватить 100-120к.
К сожалению, этот блестящий план может накрыться, так как у меня проблемы с мед. справочкой, без которой академ не дадут. Если проблема не решиться, то придется как-нибудь учиться, хотя я закончился еще на позапрошлом семестре, прошлый ели как закрыл с долгами.
Достиг полного осознанного контроля над продукцией дофамина. Щелчком пальца могу заставить себя каефовать от чего угодно.
Похудение
Стал 40кг няшным трапиком.
Учеба
Выпустился пораньше так как закрыл все предметы в универе на самые высокие оценки, президент попросил пожать третью руку его жене пока он смотрит, МИТ позвал на градуейшн притворится их алюмни
в итоге через ~20 минут он за ручку привел меня к решению. ко второй задачке я уже опомнился и сразу же сказал ему правильное решение, но не успел его реализовать.
жаль, по ощущениям обе задачки литкод изи или медиум с натяжкой, если бы не паника, то я бы смог пройти дальше.
сразу после того как мне пришел отказ, упали фейсбук и все их продукты. выводы делайте сами.
прошлые 2 дня пытался разобраться с CUP, а именно с тем, как он формирует AST, как этот AST выглядит, и как к этому AST получить доступ. в целом, вроде понял.
еще разбирался с граммаром другого С подобного синтаксиса. там есть такое:
Expr ::= Expr2:e1 ASSIGN Expr2:e2 {: RESULT = new tree ( "=", e1, e2 ); :}
| Expr2:e {: RESULT = ...; :}
;
....
Expr12 ::= ...
| IDENTIFIER:id {: RESULT = id; :}
| BOOLCONST:b {: RESULT = new tree ("literal", b); :}
| CHARCONST:c {: RESULT = new tree ("literal", c); :}
| INTEGERCONST:i {: RESULT = new tree ("literal", i); :}
| DOUBLECONST:d {: RESULT = new tree ("literal", d); :}
;
получается можно написать "asd" = 8 и парсер спарсит это без ошибок. значит это должно проверяться где-то дальше. в этом классе tree есть поле lr, в котором нужно указывать одно из трех значений: l-value, r-value или undefined. значит как-то это поле при проверке ассаймента юзается, но при этом это поле заполняется не во время парсинга, хотя вроде можно было бы, странно!
да, такие выражения парсятся без ошибок, но дальше идет этап под названием static analysis (кажется). там сначала нужным ноудам в АСТ присваиваются либо L либо R валью, потом там же в "=" ноудах идет проверка на то, чтобы слева был L.
от горя месяц назад закурил, но сейчас уже бросаю
апдейтов хочешь? хорошо!
проебал интервью в фейсбук из-за того что запаниковал.
проебал прединтервью в гугл из-за того что не подготовился по сортировкам. вообще никогда не думал, что про них что-то могут спросить, хотя в ретроспективе логично.
проебал этап общения с эйчаркой в местную компанию, в которую хотел. подавался на ГО позицию, наверное отказали из-за отсутствия релевантного опыта. попросил эйчарку написать почему отказали, сказала напишет, но в итоге не написала.
только что пообщался с другом, с которым работал и с которым учимся на одном курсе. ему уже дали оффер на стажку в фейсбуке, а сейчас он работает в яндексе миддловым питон разработчиком.
грустно как-то стало после разговора с ним, но скоро пройдет. вера в себя у меня все еще есть, но хотелось бы хоть какого-нибудь позитивного события, хоть немножко удачи...
возможно скоро начну писать сюда про то, чему научился, делая пет проект на ГО.
скинул, чтоб подсказали что не так.
особо не обосрали. как гора с плеч.
если бы я доделал до конца своей проект, то меня бы взяли с 90% вероятностью, но заниматься веб хуйней не за деньги желания особого нет.
слишком сильно волнуюсь, как будто мне какую-то детскую травму открыли...
Морду бы ему набить. Впрочем, будто мало на свете долбоёбов, приросших к высоким должностям.
отключение совсем уебанское. не знаю почему, но они не блочат запросы на порт 3785. люди себе покупают серваки на aws, ставят впн, который слушает порт 3785, и сидят себе с нормальным интернетом. общественные прокси для телеграма тоже работают, но там уже не личный сервак, поэтому тупит.
не понимаю почему это так работает, почему нельзя было просто сделать вайтлист, который блочит ВСЕ запросы на айпи вне вайтлиста?
по слухам, это из-за оборудования cisco, которое юзают провайдеры, вот баг:
https://quickview.cloudapps.cisco.com/quickview/bug/CSCvc68229
работа не ищется, отказы, наверное нужно будет теперь искать на ноуд.жс
таблетосы плохо работают, наверное из-за стресса. только недавно радовался жизни, когда отключили интернет и я спокойно, не отвлекаясь на ютуб и телегу пилил интерпретатор по книжке craftinginterpreters.com. щас прохожу через весь спектр эмоций за день. в начале дня нормально, потом начинаю радостно пилить по книжке, потом вспоминаю как мне кто-то сделал что-то плохое и часа 3 зацикливаюсь на этом, сидя в убер хуевейшем настроении, ненавидя их и порицая себя. потом хуево от того, что работа не ищется, а деньги кончаются. потом обратно отличнейшее настроение и я пилу по книжке. потом сон, цикл продолжается.
насчет интерпретатора - прошел уже до 8 главы. сделал сканер, парсер и эвалуэйшн выражений. сканер вещь не особо богатая на темы обсуждений - кушаешь буквы и выдаешь токены, просто нужно указать какие токены принимает твой язык. а вот по теме парсера уже можно много что сказать - там очень много теории, да и в практической реализации тоже много чего. вот например, чтобы парсить твой язык, нужно его описать формальным языком, обычно контекстно-свободной грамматикой (context-free grammar). эту грамматику нужно составлять так, чтобы она не была неявной (ambiguous), иначе ее нельзя будет автоматически парсить. так же нужно продукции прописывать так, чтобы был понятен приоритет (precedence) 5 + 5 == -3 это (5 + 5) == -3 или 5 + (5 == -3)? и ассиоцивность a == b == c это (a == b) == c или a == (b == c)?.
с практической стороны, то есть если спрашивать как парсить текст и определять относится ли он к языку, который генерирует cfg, тут есть много разных способов. по книжке я сделал простой топ даун парсер recursive descent. по сути просто переводишь productions напрямую в код. есть еще много парсеров у которых имена это вариации двух букв - L и R. вот в этом я уже шарю совсем плохо. я даже не до конца понял, как работает recursive descent. мои знания ограничиваются тем, что я помню как работает топ даун парсинг и очень смутно боттом ап. чтобы понять боттом ап, мне нужно было поломать голову, когда я брал формальные языки в унике. помню еще когда я это понял, объяснил все другому пчелику в классе, а он потом пошел к соседней парте и пересказал мое объяснение 5 человекам, типа это он сам все понял. а те пчелики еще такие: "ааа блин, теперь понятно, спасибо". возможно нужно будет получше во всем этом разобраться, но с другой стороны, помню как я брал компиляторы, и там дальше после парсинга были вещи поинтереснее. да и эти сканеры и парсеры можно с легкостью автоматически генерировать через какой-нибудь flex и cup parser generator. только потом всякие математики меня могут обосрать за незнание теории. да и перед собой немного стыдно, у меня все время в универе были проблемы с математикой, хоть она мне и нравится, ну, я так считаю. вот по формальным языкам сначала был отлично, когда там были всякие DFA, NDFA, регулярки, CFG. а потом мне дали по ебалу pumping lemma-ой и я что-то отстал и так и не догнал. еще щас скажу стыдную вещь, но я сосал по дискретке и линейке, ели как не завалил.
настроение улучишилось, пойду попью кофе и попилю по книжке.
работа не ищется, отказы, наверное нужно будет теперь искать на ноуд.жс
таблетосы плохо работают, наверное из-за стресса. только недавно радовался жизни, когда отключили интернет и я спокойно, не отвлекаясь на ютуб и телегу пилил интерпретатор по книжке craftinginterpreters.com. щас прохожу через весь спектр эмоций за день. в начале дня нормально, потом начинаю радостно пилить по книжке, потом вспоминаю как мне кто-то сделал что-то плохое и часа 3 зацикливаюсь на этом, сидя в убер хуевейшем настроении, ненавидя их и порицая себя. потом хуево от того, что работа не ищется, а деньги кончаются. потом обратно отличнейшее настроение и я пилу по книжке. потом сон, цикл продолжается.
насчет интерпретатора - прошел уже до 8 главы. сделал сканер, парсер и эвалуэйшн выражений. сканер вещь не особо богатая на темы обсуждений - кушаешь буквы и выдаешь токены, просто нужно указать какие токены принимает твой язык. а вот по теме парсера уже можно много что сказать - там очень много теории, да и в практической реализации тоже много чего. вот например, чтобы парсить твой язык, нужно его описать формальным языком, обычно контекстно-свободной грамматикой (context-free grammar). эту грамматику нужно составлять так, чтобы она не была неявной (ambiguous), иначе ее нельзя будет автоматически парсить. так же нужно продукции прописывать так, чтобы был понятен приоритет (precedence) 5 + 5 == -3 это (5 + 5) == -3 или 5 + (5 == -3)? и ассиоцивность a == b == c это (a == b) == c или a == (b == c)?.
с практической стороны, то есть если спрашивать как парсить текст и определять относится ли он к языку, который генерирует cfg, тут есть много разных способов. по книжке я сделал простой топ даун парсер recursive descent. по сути просто переводишь productions напрямую в код. есть еще много парсеров у которых имена это вариации двух букв - L и R. вот в этом я уже шарю совсем плохо. я даже не до конца понял, как работает recursive descent. мои знания ограничиваются тем, что я помню как работает топ даун парсинг и очень смутно боттом ап. чтобы понять боттом ап, мне нужно было поломать голову, когда я брал формальные языки в унике. помню еще когда я это понял, объяснил все другому пчелику в классе, а он потом пошел к соседней парте и пересказал мое объяснение 5 человекам, типа это он сам все понял. а те пчелики еще такие: "ааа блин, теперь понятно, спасибо". возможно нужно будет получше во всем этом разобраться, но с другой стороны, помню как я брал компиляторы, и там дальше после парсинга были вещи поинтереснее. да и эти сканеры и парсеры можно с легкостью автоматически генерировать через какой-нибудь flex и cup parser generator. только потом всякие математики меня могут обосрать за незнание теории. да и перед собой немного стыдно, у меня все время в универе были проблемы с математикой, хоть она мне и нравится, ну, я так считаю. вот по формальным языкам сначала был отлично, когда там были всякие DFA, NDFA, регулярки, CFG. а потом мне дали по ебалу pumping lemma-ой и я что-то отстал и так и не догнал. еще щас скажу стыдную вещь, но я сосал по дискретке и линейке, ели как не завалил.
настроение улучишилось, пойду попью кофе и попилю по книжке.
забыл обязательную аниме пикчу
ух как я написал, "делаю интерпретатор языка для удобной работы с First-order logic", вот это да, вот это крутой парень. на самом деле это дипломка. тему выбрал мой проф. делаю в команде из 4, в которой еще есть крайне неадекватная мразь. тема непонятная, проф шизофреник, поэтому дело не шло. я честно пытался понять чего он хочет и как это сделать, на каждой встрече по зуму задавал вопросы, примеры писал, делал что-то еще, уже не помню. остальные пинали хуи. я им сказал в чатике дистанционное обучение, что буду их репортить, чтобы им оценку нормальную не ставили. два парня извинились, сказали что будут пытаться, а девочка промолчала. потом было что-то еще, я ей что-то совершенно не личное, а по факту ее бездельничества сказал, а она мне такая НЕ МОГ БЫ ТЫ СО МНОЙ НОРМАЛЬНО ОБЩАТЬСЯ. вот это я прихуел. потом она мне еще какую-то хуйню выморозила по типу той что выше, а я ее из группы кикнул, у нее потом истерика началась, говорила что это довело ее до слез. затем мне ее парень написал, сказал что я ЛИДЕР хуевый "лол". а я парня ее отдаленно знаю, он вроде пчелик неплохой, даже интересный, да и писал не особо агрессивно, я просто другие сообщения опустил. не стал с ним конфликт устраивать, сказал что нет никакого лидера, просто так могло показаться, потому что я единственный всем занимаюсь. но по сути он сказал, что я являюсь той причиной, по которой его тяночка ничего не делает. не создал ей благоприятных условий, так сказать. потом с девочкой той выяснял отношения, она несла какую-то хуйню нелогичную и все факты коверкала, а я, кажется, вел себя как аутист, не помню. сейчас вот сижу, злюсь и думаю - наверное нужно было все свои эмоции выплеснуть, вместо того, чтобы пытаться спокойно с ней разговаривать и не спорить в тот момент.
это кстати четвертая совершенно неадекватная девушка, с которой приходилось иметь дело в универе. знаю, что девушек так любят обзывать из-за малейших вещей, я так не делаю, но тут неадекватность на грани сумашествия.
>наверное нужно было все свои эмоции выплеснуть
с другой стороны, у меня совершенно неадекватное отношение к девушкам. когда они делают малейшую вещь, которая меня хоть как-то задевает, у меня начинает печь так, как будто она обоссала меня у всех на глазах, при этом ядовито и как бы свысока хихикая, что-то в этом роде. прямо неистовая ярость появляется. с парнями не так. ну и не со всеми девушками так, но с достатчным кол-ом, чтобы я осознал, что у меня какие-то проблемы.
вот я ее неадекватной назвал, а у самого такая хуйня. только вот я себя сдерживать умею и не обременяю своей проблемой окружающих.
https://www.youtube.com/watch?v=ZaAKX1RHu2c
Зачем точки с запятой? Сделой так, чтобы можно было без них писать. И ещё как работает "print a"? Типа если у функции только один аргумент, то можно не писать скобки?
print - это встроенный в язык оператор, который принимает 1 выражение, никаких скобок. когда интерпретатор выполняет поддерево с принтом, то просто вызывается System.out.println джавы.
точку с запятой может и уберу в своей версии интерпретатора, а так я делаю по книжке и там они просто ЕСТЬ. но еще они есть в формальной грамматике Go, например, только юзер об этом может не знать, так как их за него генерирует компилятор. это догадка, но мне кажется без них некоторые вещи становятся немного сложнее при парсинге. например, после ";" ты с большой вероятностью можешь ожидать следующий стейтмент. такое наблюдение используется когда при парсинге выражения случилась ошибка, и теперь несколько последущих токенов не имеют смысла и их нужно выкинуть. при методе генерации ошибок парсера, который используется в книжке, токены выкидываются пока не найдется токен, начинающий следущий стейтмент, а именно: ";", "class", "fun", "var", "for", "if", "while", "print", "return".
например такой код- "func(c - (a /) * 5 -); var d = 5;". после ошибочного "/" дальше парсить выражение внутри скобок не имеет особого смысла, так как там могут начать репортиться фантомные ошибки, которые исчезнут как только исправится "/". поэтому все токены до ";" - игнорируются, как и весь стейтмент вызова функции. дальше начинается новый стейтмент "var", который с ошибочным выражением никак не связан, поэтому его можно парсить, чтобы найти побольше правильных ошибок и показать их пользователю.
там пропустилась еще одна легитимная ошибка с "-" внутри вызова функции, но похуй, все ошибки после первой это best effort.
>>572020
если ты в общем про использование var, то мне кажется норм.
если ты про то, что я передекларировал "a", то это просто чтобы проверить - работает ли. работает, и это, я считаю, не правильно. в идеале на стадии парсинга я бы выдал ошибку, но для того, чтобы это сделать, нужно проверять локальную среду - если такая переменная уже есть в среде, то выдаем ошибку. НО в случае интерпретатора в книжке, переменные в среду загружаются непременно после парсинга, при этапе выполнения юзер кода. получается, что можно выдать только бегвремя ошибку, что я считаю еще хуже, чем разрешить это. как это решить я пока что не знаю. кажется, после парсинга нужно добавить еще один этап под названием статический анализ, который еще не выполняет код, а просто проходит по сгенерированному парсером дереву и каким-то образом проверяет переменные на редекларации, ну и еще пару вещей. только вот кажется это надубийство. такой этап нужен когда у тебя в языке статическая типизация, чтобы проверить правильно ли типы используются.
print - это встроенный в язык оператор, который принимает 1 выражение, никаких скобок. когда интерпретатор выполняет поддерево с принтом, то просто вызывается System.out.println джавы.
точку с запятой может и уберу в своей версии интерпретатора, а так я делаю по книжке и там они просто ЕСТЬ. но еще они есть в формальной грамматике Go, например, только юзер об этом может не знать, так как их за него генерирует компилятор. это догадка, но мне кажется без них некоторые вещи становятся немного сложнее при парсинге. например, после ";" ты с большой вероятностью можешь ожидать следующий стейтмент. такое наблюдение используется когда при парсинге выражения случилась ошибка, и теперь несколько последущих токенов не имеют смысла и их нужно выкинуть. при методе генерации ошибок парсера, который используется в книжке, токены выкидываются пока не найдется токен, начинающий следущий стейтмент, а именно: ";", "class", "fun", "var", "for", "if", "while", "print", "return".
например такой код- "func(c - (a /) * 5 -); var d = 5;". после ошибочного "/" дальше парсить выражение внутри скобок не имеет особого смысла, так как там могут начать репортиться фантомные ошибки, которые исчезнут как только исправится "/". поэтому все токены до ";" - игнорируются, как и весь стейтмент вызова функции. дальше начинается новый стейтмент "var", который с ошибочным выражением никак не связан, поэтому его можно парсить, чтобы найти побольше правильных ошибок и показать их пользователю.
там пропустилась еще одна легитимная ошибка с "-" внутри вызова функции, но похуй, все ошибки после первой это best effort.
>>572020
если ты в общем про использование var, то мне кажется норм.
если ты про то, что я передекларировал "a", то это просто чтобы проверить - работает ли. работает, и это, я считаю, не правильно. в идеале на стадии парсинга я бы выдал ошибку, но для того, чтобы это сделать, нужно проверять локальную среду - если такая переменная уже есть в среде, то выдаем ошибку. НО в случае интерпретатора в книжке, переменные в среду загружаются непременно после парсинга, при этапе выполнения юзер кода. получается, что можно выдать только бегвремя ошибку, что я считаю еще хуже, чем разрешить это. как это решить я пока что не знаю. кажется, после парсинга нужно добавить еще один этап под названием статический анализ, который еще не выполняет код, а просто проходит по сгенерированному парсером дереву и каким-то образом проверяет переменные на редекларации, ну и еще пару вещей. только вот кажется это надубийство. такой этап нужен когда у тебя в языке статическая типизация, чтобы проверить правильно ли типы используются.
вообще, что-то я щас думаю, а в каком императивном языке НЕ используются какой-либо формы разделения между стейтментами? в жаваскрипте ";" генерируются за тебя, в го тоже, в питоне используются отступы. что-то мне кажется, что без этого не обойтись.
в питоне используется ньюлайн*
посмотрите на statement_newline тут:
https://docs.python.org/3/reference/grammar.html
а блин ты свой интерпретатор пишешь. Я подумал, что в js через var вкатываешься, кек.
>я делаю по книжке
а че за книжка?
в конце главы как обычно задачки. задали имплементнуть перерыв, да так чтоб парсер выдавал ошибку, если находит его вне циклового блока. первая мысль: "а как блядь?!?!?!". но затем осенило и я правильно решил как реализовать перерыв в бегвремя, а выдачу ошибки на этапе парсинга я сделал неправильно, но к сожалению уже случайно увидел правильное решение.
какой-то очень сильный скачок сложности, до этого были задачки попроще.
другие 2 задачки в конце этой главы были посмотреть про динамик диспатч и про то, как он может заменить ифы и форы, но пускай мне сам показывает. если в книге не будет, то так уж и быть, как-нибудь посмотрю.
>>572146
https://craftinginterpreters.com/
… это тоже шутка??
кажется пора переходить на свой стэк - нод жс. насчет него мне рекрутеры сами пишут
в 11 главе решались проблемы с таким методом хранения локальных переменных. например, вот:
[code]
var a = "global";
{
fun showA() {
print a;
}
showA();
var a = "block";
showA();
}
[/code]
в простой имплементации второй showA() сначала выведет global, а потом block. я это за проблему вообще не считаю, но в книжке использование переменной определили так, что проблема есть. вот определение: A variable usage refers to the preceding declaration with the same name in the innermost scope that encloses the expression where the variable is used. под preceding declaration имеют в виду декларацию, предшествующую этой линии кода. так как var a = "block"; идет после print a;, то "а" в print a; не может ссылаться на var a = "block";. не знаю зачем делать такое определение, но в го тоже так, и честно скажу - для меня это открытие. еще попытался потестить это в жаваскрипте, но там уебищные хойстинг и правила шадоуинга, не смог без ошибки.
>>572071
>как это решить я пока что не знаю. кажется, после парсинга нужно добавить еще один этап под названием статический анализ, который еще не выполняет код, а просто проходит по сгенерированному парсером дереву и каким-то образом проверяет переменные на редекларации, ну и еще пару вещей.
все так, в книжке так и сделали. только назвали этот этап сначала semantic analysis, а потом внезапно и без объяснений начали называть его static analysis.
в 11 главе решались проблемы с таким методом хранения локальных переменных. например, вот:
[code]
var a = "global";
{
fun showA() {
print a;
}
showA();
var a = "block";
showA();
}
[/code]
в простой имплементации второй showA() сначала выведет global, а потом block. я это за проблему вообще не считаю, но в книжке использование переменной определили так, что проблема есть. вот определение: A variable usage refers to the preceding declaration with the same name in the innermost scope that encloses the expression where the variable is used. под preceding declaration имеют в виду декларацию, предшествующую этой линии кода. так как var a = "block"; идет после print a;, то "а" в print a; не может ссылаться на var a = "block";. не знаю зачем делать такое определение, но в го тоже так, и честно скажу - для меня это открытие. еще попытался потестить это в жаваскрипте, но там уебищные хойстинг и правила шадоуинга, не смог без ошибки.
>>572071
>как это решить я пока что не знаю. кажется, после парсинга нужно добавить еще один этап под названием статический анализ, который еще не выполняет код, а просто проходит по сгенерированному парсером дереву и каким-то образом проверяет переменные на редекларации, ну и еще пару вещей.
все так, в книжке так и сделали. только назвали этот этап сначала semantic analysis, а потом внезапно и без объяснений начали называть его static analysis.
как обычно забыл аниме картинку
завтра интервью в яндекс на с++. на него меня отправила какая-та мутная рекрутерша, которая работает в левой компании. говорит, что их яндекс нанял, так как сами не справляются. вакансия вроде как бы сеньорская, получается я сеньор с++, который на нем кодил чуть больше года свои проекты, без коммерческого опыта. знаю что проебу, но пойду ради опыта. подготовился прорешав 5-6 средних литкод задач. очень сильно их не любил, но щас с этим уже получше.
интересно, сколько тут людей смогут решить хотя бы такое:
https://leetcode.com/problems/unique-paths/
Это же элементарная задача на комбинации. В учебнике такое будет на первых 5 страницах.
Это тихо сфейлится по переполнению. Там надо чередовать операции если нет длинной арифметики, в вики посмотри.
Оно и так тесты проходит, но можно чередовать наверное, а что за вики?
у меня с терминами все плохо, что за учебник и какие именно комбинации? я решил через dynamic programming, ты про это?
Раз проходит то и молодец, но если бы это была олимпиадка то точно бы дали кейс где будет переполнение. Вики: https://en.wikipedia.org/wiki/Combination
Релевантный кусок пикрел. Если в правильном порядке чередовать умножения и деления, числа будут гораздо меньше, чем в лоб с факториалом.
А, у тебя на этом пике как раз чередование и есть.
Учебник по комбинаторике, мне кажется такое даже в школах продвинутых проходят. Роботу нужно выбрать какие из m+n шагов будут шагами вниз. Количество разных выборов это Comb(m+n, n). Классическая задача.
первая задача была такая: есть массив из 0 и 1. нужно найти подмассив с максимальным кол-ом 1 в нем, учитывая что из массива нужно убрать любой один элемент. очень долго думал, придумал 2 хуевых решения, но через 25 минут понял, что можно держать 2 суммы - первая это сумма однерок которая уже встретила один нолик, вторая это сумма однерок которая еще не встретила нолик. при встрече нового нолика, первая не может продолжать идти дальше, поэтому ее значение сохраняется в ответе, если она больше суммы, которая уже сохранена в ответе. а вторая сумма становится суммой первого типа, поэтому ее значение сохраняется в первой сумме, а она сама приравнивается к 0.
вторая задача: есть текст T, слово S, и нужно найти в Т подстроку S', которая в точности до перестановки букв идентична S, и вернуть индекс ее первой буквы. то есть если T="adadsa" s="asd", то s' = "dsa". решение придумал быстро, нужно просто все буквы из s добавить в мапу, где ключ - буква, а значение - кол-во. потом нужно перебрать все подстроки размером len(S) в T, и проверить у каждой буквы с той мапой. то есть если буквы нету в мапе, то это не то, если буква есть, то уменьшаем значение на 1, если значение уже есть, то это тоже не то. если никакие из негативных кейсов не сработали, то мы нашли S' и нужно просто вернуть индекс первой его буквы.
НО! это не идеальное решение, можно было сделать чуть получше и интервьюер мне об этом сказал, из-за чего я минут 20 пытался додуматься как, но в итоге не смог, поэтому просто закодил свое решение. после интервью спросил у пчелика, он мне объяснил решение получше. нужно было немножко по другому сравнивать подстроку и мапу, но да ладно. объяснять решение получше я тут не буду.
в первой задачке нужно найти длину подмассива*
>максимальным кол-ом 1
Может, максимальным процентом? С максимальным количеством это весь массив.
именно ПОДМАССИВ с максимальным кол-ом 1. то есть если массив = [1, 0, 0, 1, 1, 0, 0, 1, 1, 1], то подмассив c максимальным кол-ом 1 будет [1, 1, 1]. или другой пример [1, 0, 0, 1, 1, 0, 1, 1, 1], тут правильный подмассив будет [1, 1, 0, 1, 1, 1], потому что один нолик можно убрать.
то есть contiguous subarray
ой, я понял в чем проблема, нужно найти подмассив с максимальным кол-ом 1, в котором максимум один нолик. вот так должно быть правильно.
На стековерфлоу предлагают скользить по тексту T окном длины S.length и вести счётчик, который увеличивается на 1, когда добавление в окно новой буквы приближает (снизу) множество букв подстроки к целевому, то есть когда добавляется буква A такая, что в окне было n букв A, в искомой строке — m, и n<m, и уменьшается при такой же ситуации при выталкивании буквы. Достижение счётчиком S.length (или можно начинать счётчик с −S.length и проверять на 0) означает полное соответствие.
>Божий план
Не "план", а "замысел", хватит по-ебанутому переводить с ингланда, когда всё уже есть и красиво сделано.
я не понял как
>когда добавление в окно новой буквы приближает (снизу) множество букв подстроки к целевому
вот это будет проверяться.
в "идеальном" решении тоже нужно буквы добавлять и выталкивать по мере скольжения окна, только там все буквы окна хранятся в мапе. на каждой итерации эта мапа, из которой буква слева вытолкнулась и буква справа добавилась, сверяется с мапой для S. сверяется по ключам(буква) и по значениям(кол-во). если полностью идентично, то мы нашли S'. сложность будет O(len(T) 26), так как в этой мапе для окна может быть максимум 26 ключей. в моем оригинальном решении сложность O(len(T) len(S)), так как я уменьшаю значения в мапе для S при каждой итерации, вместо того чтобы сравнивать значения.
>>577219
не понял, если я найду подмассив с максимальным кол-ом 1, то это и есть массив с максимальным процентом 1. ну, если не учитывать что таких подмассивов может быть несколько.
Сделал на Паскале. Моя версия для простоты вместо отображений использует массивы длины 256 и работает с символами как с байтами. Это даёт ложные срабатывания на многобайтовых кодировках: например, русские буквы в UTF-8 имеют байтовый вид
>D0 XX
или
>D1 XX
поэтому при поиске двух букв «бв» как четырёх байт
>D0 B1 D0 B2
в четырёх буквах «абвг» как восьми байтах
>D0 B0 D0 B1 D0 B2 D0 B3
помимо верного ответа
>D0 B1 D0 B2
возникнет паразитное срабатывание на
>B1 D0 B2 D0
У меня это обходится через валидацию кодовой точки UTF-8 в найденной позиции (UTF-8 так спроектирована, что оборванный символ никогда не валиден).
Вообще-то даже мапы по кодовым точкам (а не байтам) не всегда будут работать: например, «é» может быть представлена сочетанием двух кодовых точек — буквы «e» со следующим за ней символом ударения (U+0301), неразделимость которых такая мапа не учтёт. Полное решение для любого текста не так уж тривиально. :)
ставлю лукас
какой же каеф, никогда еще так не радовался от решения задачки, хотя, казалось бы, задачка далеко не сложная, но чтобы ее решить мне пришлось преодолеть себя духовно, морально, и психологически. я сначала подумал что не решу, так как кроме бинари серча О(лог н) алгоритмов не знаю, а он тут не совсем подходит, ведь неизвестно что нужно искать. хотел уже открывать решение, но потом преодолел себя, подумал-потужился и каким-то образом пришел к правильному решению за минут 10-15. потом начал писать решение, думал щас какое-то говно напишу, потому что спойлер решения бинари серч писал 1 раз в жизни года 3 назад, но нет, написал максимально красивый код, который заработал с 1 раза. отличное чувство, будто покорил гору эверест. даже поднял кулак в воздух и закричал "да", когда увидел, что литкод принял решение.
Задачу решил немного не так как в видео. Мне мое решение нравится больше.
Вот люди пишут, что это все паттерны, прорешаешь 100 литкод медиум задач и сможешь все остальные решать с легкостью, ведь ПАТТЕРНЫ к этому времени в голове сформировались. Но я не очень в это верю, я когда эту задачку решал, мне нужно было сделать "прыжок" к идеи, которая привела к эффективному решению. И ни в какой из предыдущех задачек ничего похожего на этот прыжок не было. Чтобы его совершить нужно иметь то, чему не обучишься. Да, по мере решения задач набивается рука и последующие задачки ты уже решаешь легче - это факт. Но это больше похоже на процесс расчистки пути для совершения того самого прыжка. Это немного страшно, ведь это означает, что даже прорешав 100+ задач я все еще могу жидко обосраться на интервью.
Кстати, насколько я помню со сложными интегралами все так же - там тоже нужна какая-та интуиция.
>Но я не очень в это верю
Сначала прорешай сто задач, потом говори. Дрочь она одинакова во всем. Чем больше ты делаешь, тем лучше ты это делаешь.
решил, но оба решения неоптимальные. как их решить оптимально я не понял.
например, в первом я тоже использую две мапы: в первой ключи это "откуда", значения это "куда", и там и там просто строки; во второй ключи это "куда", значение уже не важно, я сделал просто булиан. первая мапа нужна чтоб построить результат, а вторая чтоб найти начальный город. не знаю как без второй мапы это сделать, чтоб получить такую же сложность алгоритма.
во втором решении я сортирую список интервалов по первому значению, затем мерджу интервалы, которые оверлапятся. интервалы, в которых все работники не заняты - это просто окна между мерджнутыми интервалами. в итоге O(nlogn), но по словам интервьюера кажется можно получше. он предлагает изначально заполнить какую-то структуру и потом из нее убирать занятые интервалы. я не понял как.
через динамик программинг за O(n^2)
когда увидел, что литкод принял решение, впал в состояние шока и чуть не упал со стула. ударило сильнее чем тут >>578279 . первая более-менее сложная дп задача, которую я решил самостоятельно. я гений вундеркинд? я переиграю всех, кто перейдет мне дорогу? я завоюю планету?
не отказ, прошел вторую секцию, осталась только третья.
только что очень резко стало хуево. нужно себе сказать, что у меня все получится и все как-нибудь разрешится. у меня все получится и все как-нибудь разрешится. я умный красивый добрый не душнила интересная личность мной интересуется весь мир просто скрытно не подавая признаков. я попаду на самую крутую работку потом сниму фильм аниме напишу книгу поеду в японию мне дадут все девочки из телефонной книжки в якузе 0 когда я им покажу что собрал все 3 типа их карточек. я напишу музыку напишу язык программирования философский трактат побежу в дебатах каждого интеллектуала. я вырасту на ~15см а член на ~3см я буду накаченным и мужиковатым в теле но буду так же иметь красивое элегантное лицо. девушки у меня не будет настолько далеко заходить в своих фантазиях не буду.
интервьюером была тянка. первую задачу с запинками решил, она была очень простая, но там нужно было не выходить за границы массива, с этим я два раза проебался, но исправил. еще забыл, что в питоновских лупах индекс нельзя в теле обновлять, только после ее подсказки поменял на вайл, кринж.
вторая задача полный провал. повторилась ситуация с фейсбуком, где я вообще не понял условие с первого раза и мозг перестал функционировать. в этот раз, правда, я что-то да высрал, но с сильными подсказками. код недописан, решение на словах объяснено хуево, сложность оценена хуево. она мне втерла про АМОРТИЗИРОВАННУЮ сложность, я думал про такое меня никогда не спросят, хотя логично что такое может придти, это не что-то сильно продвинутое.
тянка умная и добрая. спросил ее какого уровня была вторая задача, она сказала что литкод давно не решала, но по опыту ОЛИМПИАДНОГО программирования наверное литкод медиум. еще дала мне дополнительно пол часа чтоб я написал свой несчастный код, лол. ну и подсказок много.
в итоге за все секции решил 5 задач и проебался в 1, скорее всего придет отказ. печально!
не знаю, меня на финальное интервью пригласили, но даже если дадут оффер, то я наверное откажусь, так что походу действительно Ф
сложно ответить почему именно. попробую сначала дать инфу, которую ты мог не знать, может в таком случае вопрос отпадет.
1. в Я удаленку лохам не дают, придется жить в москве. в рф ситуация неопределенная.
2. я попал под новый закон для грантников, который обязывает меня после выпуска отработать 3 года в компании моей страны и по моей специальности. я думаю это можно обойти, но это добавляет неопределенности. вдруг не смогу? нужно будет уезжать из Я на родину всего-лишь через 2-3 месяца работы и еще и оплачивать всю сумму обучения, а сумма немаленькая
3. честно говоря, я в рф и до военной операции не хотел. думается мне, что я там не приживусь.
тем не менее, я очень хотел бы поработать в Я, мне кажется там работают крутые ребята, ну и задачи я думаю непростые, там хайлоад. хотя я слышал, что могут заставить перекладывать жсоны, мне было бы неприятно попасть в такую команду.
вах действительно вах наверное не надо ехать вах просто я старался вах и крутая компания вах и в своей стране сложно работу найти вах
нет еще вах, у меня 1 год опыта вах, это слишком мало чтоб переехать в обычные компании вах, там надо быть сильным мидлом минимум вах, а в фаанги пытался вах, проебывал тех интервью так как не хотел решать ебучие литкод задачи вах, только щас научился нормально их решать вах
правый ботинок* ну вы поняли только попробуйте что то сказать было очевидно что я имею в виду смысл слова строится еще из контекста не только из значения самого слова по контексту все можно было понять
Испытательный пройди, потом закрой. А то могут и турнуть. А могут и шлёпнуться – время нестабильное. Ты погоди, не удаляй.
какое совпадение, как только я это написал, сразу наткнулся на эту картинку. первый пункт про меня, к сожалению.
Часто оператор<< делают френдом класса из-за того, что он не может быть его мембером и кому-то слишком лень делать нормальный интерфейс для класса, чтобы из публичных методов можно было всё нужное для оператора<< достать.
https://stackoverflow.com/questions/54702397/in-c-is-it-possible-to-use-crtp-with-a-private-base
Ещё для CRTP с приватным наследованием, чтобы базовый класс мог static кастнуть самого себя к наследнику.
Короче, нужно для шизофрении всякой. Ну как бы что ещё можно ожидать от языка, в котором до C++17 считалось нормальным писать пикрил 1 не было fold expressions, до C++20 - пикрил 2 не было раскрытия пачек параметров в списке захвата, до C++23 - пикрил 3 с deducing this станет проще?
>2 и 3 пикрил
пиздец, вот это я отстал от жизни, я ведь только 11 стандарт знаю. а еслиб мне показали 3 пикрил, я бы подумал что это раст.
еще я могу остаться на 5 год в универе, так как забил хуй на один из предметов. из-за этого всего волнуюсь, но думаю в итоге все станет хорошо.
На первой работке просидел 9 месяцев, там социально прокачался, начал лучше понимать себя, начал пить антипсихотики, благодаря которым у меня уже почти год стабильное настроение, ко мне подкатывала девочка в офисе, с которой ничего не вышло, но о которой я все еще думаю, начал жить с другом, что тоже влияет на стабильное настроение, стал каким-то нормисом, напиваюсь по выходным и гуляю с друзьями в заведениях, даже в клуб несколько раз ходил.
На первой работке почувствовал стагнацию и ушел на новую, на которой мне теперь относительно много платят, и технический уровень у пчеликов тут покруче. Работаю уже 5 месяцев, опять чувствую стагнацию, придумал план как стать круче.
Коплю деньги на языковую школу в Японии, учусь языку год и параллельно работаю на своей текущей работке, через девять месяцев начинаю искать работу в Японии у меня к тому времени будет 3 года опыта, что является магической цифрой для эйчарок, после которой они уже не считают тебя говном, остаюсь там бог знает на сколько, посмотрим.
План осуществимый, я уже начал копить, нужно $13 500 на первое время, копить буду кажется чуть больше года, так как имеются кредиты на технику + аренда.
Программирование не за деньги меня, кстати, перестает интересовать. Хочу снова зажечь искру.
вчера во время дейлика тимлид о чем-то говорил, а я в это время прочитал этот пост и перебил его своим смехом, прям сильным, теперь стыдно
Causal power of consciousness
Sometimes it seems as if our conscious intents are not able to manifest into physical results. But how so? If I decide that I would like to read a philosophy book right now, how come this intent falls short right at the start? How come I don't close youtube, open pdf of the book and start reading? How come I have to battle whatever that is I'm battling (boredom?) in order to carry out my conscious intent, and still lose at the end? The answer is somewhat well known and it has to do something with dopamine, etc. However, doesn't this show that the causal power of our consciousness is limited? Consciously, I would love to work hard, but it seems as if that is not enough. What do people that are disciplined and work hard have that I don't? We both have conscious intent, and yet it seems like that is irelevant, and the real difference are the physical properties of our minds, which I'm not able to control.
вот тут схожая тема: https://plato.stanford.edu/entries/mental-causation/
но там больше про вопрос каким образом ментальное может влиять на тело. а мне больше интересен вопрос в какой мере человеку подвластны его действия. пока что мне кажутся разумными идеи эпифеноменализма.
нужно получше заресерчить эту тему, но не знаю с какой книжки начать.
>я очень сильно надеюсь, что это из-за того что весь мой потребляемый контент на английском языке
Тест контента:
ОП-хуй
получается я уже 14 дней ресерчу эту тему. читаю книжку Mind a brief introduction, про попадающиеся там темы читаю статьи на plato stanford edu, смотрю лекции к этой книжке. ресерч ушел в другую сторону, но все равно у меня в голове теперь формируются какие-то ответы и более четкие вопросы.
сама книжка вроде хорошая, но вроде и слишком поверхностная. думаю это вполне естественно, ведь пчелику нужно было 1) написать довольно понятно для лэймэна, и довольно точно, чтобы должным образом описать идеи 2) скомкать главные течения в философии сознания в читабельный объем. получилось как получилось, ничего говорить не буду, но я закончил где-то на 100 странице, дальше он вроде начинает описывать свою теорию, это я уже читать не буду.
проходить философию вне академической обстановки для меня сложно. мне нужен ментор, у которого можно поспрашивать свои вопросы, но его нет.
а еще я читал без конспектов, из-за чего забыл много чего из этой книжки. нужно конспектировать каждый параграф по мере чтения, так сказал один умный пчелик с ютуба.
ну и мне не очень понравился формат survey популярных течений. я бы предпочел прочитать про что-то одно с полной аргументацией.
уже 4-ый месяц хожу в кочалку, занимаюсь с тренером, результаты так себе. может он хочет чтобы я к нему дольше ходил, поэтому дает мне хуевую программу? все это время у меня была программа на все тело.
хожу на японский, но понимаю что мне это не очень интересно. идея с японской языковой школой теперь кажется более сомнительной. думаю про диджитал номад визу в малайзию.
хочу обратно пройти матешу. думаю в будущем это даст какие-то неочевидные мне сейчас плюшки, да и лучше заниматься чем-нибудь, чем не заниматься ничем и гнить. начал с азов (precalculus), потому что у меня есть проблески в базовых знаниях. потом перейду на калкулус, потом линейка и статистика. по крайней мере таков план. надеюсь буду его придерживаться.
попал в одну телеграм группу с пендосами с форчана. 3 года назад я был в смежной по участникам группе, но так как я был неадекватом без таблеток, устроил срач и вышел обидевшись на всех. сейчас есть позывы сказать какую-то хуйню, но более контролируемые. хотя если я вернусь в ту самую группу, то я опять посрусь и выйду. получается таблетки с этим не помогают.
хотя если я забыл все то, что проходил в универе, есть ли смысл проходить это заново? не знаю!
хочу писать на класненькой гошке, копаться в том как она работает, учить как там все устроено. но так как я за это не получаю за это деньги, то заниматься этим я конечно же не могу.
еще пересмотрел аватар легенда об аанге, очень классный мультик!