1. Куча / Говнокод #26964

    +1

    1. 1
    Питушня #7

    #1: https://govnokod.ru/26692 https://govnokod.xyz/_26692
    #2: https://govnokod.ru/26891 https://govnokod.xyz/_26891
    #3: https://govnokod.ru/26893 https://govnokod.xyz/_26893
    #4: https://govnokod.ru/26935 https://govnokod.xyz/_26935
    #5: (vanished) https://govnokod.xyz/_26954
    #6: (vanished) https://govnokod.xyz/_26956

    Запостил: nepeKamHblu_nemyx, 20 Сентября 2020

    Комментарии (486) RSS

    • Доброе утро!

      Этот оффтоп сгенерирован автоматически.

      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/ (альтернативный Говнокод)
      * https://gcode.space/ (read-only зеркало Говнокода)
      * @GovnokodBot в «Telegram»
      * https://vorec.space/ (глоссарий Говнокода)
      Ответить
    • Что значит "Сбалансированный цикл"?
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • ловлю себя на мысли, что, когда хочется написять новый пет-проджект, то одной из первых идей в голову приходит какая-нибудь игрушка (например, tbs)

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

      но почему нормальные люди пишут для себя движки бд, а мне хочется свой хомм? это анскильность? вон из профессии?
      Ответить
      • Ну дык не обязательно скиллы поднимать. Если тебе интересно попробовать игруху сделать - вай нот?
        Ответить
        • Предлагаю шашки для начала.
          Ответить
          • Тетрис, змейку, сапёра и успокоиться.
            Ответить
            • арканоид еще)) писал арканоид?
              Ответить
              • Да, конечно. Ещё на денди с бейсиком. Тут вон его кто-то тоже недавно выкладывал на крестах.
                Ответить
        • ну как бы хотелось, чтобы это было
          а) или полезно
          б) или хотя бы прокачивало скилл

          с полезным сегодня тяжеловато (практически все полезные программы уже реализованы раз по 100500 во всех формах и позах)

          остаются скиллы.

          конечно, даже в игре можно набить какой-то скилл
          например, управление принятием решений для "ИИ"
          Ответить
          • >практически все полезные программы уже реализованы раз по 100500 во всех формах и поза

            Чарльз Дьюэлл, директор Патентного бюро США, в 1899 году сказал: “Все, что могло быть изобретено, уже было изобретено.

            Авторы свиней с питицами считают мульоны, и передают тебе привет
            Ответить
            • показать все, что скрытоvanished
              Ответить
            • о, ну Ровио это такой себе пример

              чуваки сделали охулион проектов, чуть не закрылись, после чего один выстрелил и они даже явно не поняли, почему

              мобильный гейдев это вообще полное говнище, не ходите туда, пацаны
              Ответить
              • Вспоминается история про то, как какой-то мужик сделал автоматический генератор викторин и каждый день заливал в «Гугл Плэй» по новому «приложению». Что характерно, вполне неплохо так зарабатывал (ну, для полностью автоматизированного процесса).
                Ответить
              • я к тому, шо выстрлетить может всё, что угодно
                Ответить
          • > например, управление принятием решений для "ИИ"

            Напиши игру, в которой противники будут управляться нейросетками и постоянно улучшаться генетическими алгоритмами. Опционально — распределённо, чтобы все играющие сливали на сервер данные об обучении. Назови, например, «Skynet».
            Ответить
            • Ну кстати норм тема, как раз можно видюху на всю катушку поюзать. А то эти тензорные ядра простаивают всё равно.
              Ответить
        • Это все от хардкорности зависит. Кто-то возьмет какую-то поебень вроде Unity - ну там действительно хуй поднимешь скиллы. Вот если б я решил делать игруху, я б пошел очень хардкорным путем, начал бы изучения какого-то OpenGL, потом бы разбирался с тем, как через этот OpenGL рисовать, как текстурки натягивать, прочитал бы про аффинные преобразования и как через кватернионы поворачивать... короче вместо самой игры я б дрочился с какими-то API, шейдерами и математической хуйней и писал бы свой движок с нуля.
          Ответить
          • > дрочился с API
            > шейдеры
            > кватернионы

            Я так Кубик Рубика слепил с моделями на тыщи полигонов, попиксельным освещением и 16х антиалиасингом.

            Собственно на этом я удовлетворился и забил на графику и гейдев.
            Ответить
      • >нормальные люди пишут для себя движки бд
        Ответить
      • > и в принципе практическое отсутствие каких-то скиллов, которые можно поднять
        Ой зря, ой зря. Если «гейдев» — это не натягивание текстурок на болванки в «Юнити», а что-то более хардкорное, вроде движка с нуля (мы же про пет всё таки говорим), то от ма-те-ма-ти-ки и прочих ал-го-рит-мов там просто охуеть можно.

        > но почему нормальные люди пишут для себя движки бд, а мне хочется свой хомм?
        Ну, мне вот не хочется движки БД, мне всё время хочется писать вореции вообще и нейровореции в частности.
        Ответить
        • > движка с нуля

          С современными графическими API пока цветной треугольник нарисуешь уже бицуха лопнет.
          Ответить
          • не понял, что не так с современными API ?
            Ответить
            • Ну раньше всякие glRotate да gluSphere были, для лаб удобно было.

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

              Старое API же выбросили на помойку, на телефонах и в вебе теперь только минимальный профиль где всё по хардкору.
              Ответить
              • а, ты про 3Д, тогда понятно.

                2Д-то не сильно изменилось.
                Ответить
                • в 2D шейдеры тоже не помешают в общем-то

                  с точки зрения opengl вроде нет никакой особой разницы, всё отличие в сложности трансформаций, которые придётся делать
                  Ответить
                  • если ты пишешь под opengl то вероятно да, но я вот писал под gdi как-то, или там под swing, и ничего про opengl не знал, и тёк

                    разумеется всё жутно не оптимально было
                    зато почти как в uses graph;)
                    Ответить
                • Я могу ошибаться, но по-моему все 2д игрухи сейчас через 3д API рисуют. Просто матрицы надо очень аккуратно настроить чтобы текстуры не пидорасило.

                  Вроде жопа в том, что аппаратно ускоренных 2д апи в операционках просто не существует. Директ дроу закопали, GDI и X - треш лютый.
                  Ответить
                  • потому и было сказано
                    >разумеется всё жутно не оптимально было

                    если ты делаешь, к примеру, квест, то ты можешь 3Д не трогать

                    >ускоренных 2д
                    вроде бы 2Д должна делать карта, но так как 99% игр 3Д, карте нет резона делать это быстро для адских резолюшенов

                    зырь сюды
                    https://docs.microsoft.com/en-us/windows-hardware/drivers/display/optional-graphics-driver-functions
                    Ответить
                    • Ну с opengl/vulkan/dx у тебя будет нормальная фильтрация текстур и антиалиасинг, кстати. Сможешь крутить и масштабировать картинки без уёбищных лесенок и пикселей.

                      Плюс всякие няшные эффекты и системы частиц на шейдерах. Даже в квесте пригодится.
                      Ответить
                      • вот про два апи под винду с ускорением
                        https://docs.microsoft.com/en-us/windows/win32/direct2d/comparing-direct2d-and-gdi

                        Кстати, Direct2D is layered on top Direct3D

                        >On Vista, GDI will always render on the CPU
                        вистобляди соснули
                        Ответить
                        • > Direct2D

                          Ну это вендорлок, так не интересно. С OpenGL ты и на винде и на маке и на прыщах запустишься и на мобилках и даже в вебе. А это чисто винда.
                          Ответить
                          • конечно, запустишься. Но сначала ты покушаешь всю ту сложность, про которую ты говорил, а еще потом кросс-платформенную разработку, не?;)
                            Ответить
                            • Ну эта сложность она таки одинаковая на всех платформах. И шейдеры от десктопа у меня в вебе вполне работали.

                              А для создания контекста можно готовую либу взять.
                              Ответить
                              • имелось ввиду, что если ты хочешь опенджл, то ты наверное должен мочь в какойнить GLSL там, не?

                                А с обычным 2Д интерфейсом ничего сложнее примитивов и bitblt в руках держать не приходица.

                                Хотя ничего серьезного наверное и не напишешь
                                Ответить
                                • > GLSL

                                  Да это сишка обрезанная. Там больше матан учить, чем этот язык. В любом случае, можно их из туториала или каких-нибудь статей скопипастить.
                                  Ответить
                                  • Именно потому я за "двумерные квесты". Спрайт по экрану двигать можно без всякого матана..)

                                    вот как тут
                                    https://youtu.be/-iQIcibJ8-c?t=166
                                    Ответить
        • писать свой движок это интересно само по себе

          но тогда есть шанс, что игру не сделаешь игру никогда, потому что будешь задрачивать только движок
          Ответить
          • Поэтому я, опять же, предлагаю шашки. Там надо будет просто сделать шестидесятичетырёхъячеечную HTML-таблицу и прописать логику перемещения кружков по ней.
            Ответить
          • Ну и ладно, если тебе интересно писать именно игру — пиши игру. Ничего зашкварного в гейдеве самом по себе нет, разумеется.
            Ответить
          • начни с простого движка

            сделай 3Д движок без пола и потолка, как в wolf3d
            Ответить
            • с простого движка я начал несколько лет назад, правда, 2D (и на шарпе, лол).

              что меня впечатлило, так это то, что через несколько лет взял этот проект, сделанный в VS, открыл в VS for Code, слил зависимости, сбилдил и оно заработало (ну, не считая ужасного перфоманса из-за особенности рендеринга). какая совместимость )))
              Ответить
              • а ты хочешь 3Д или 2Д и какой жанр?
                Ответить
                • Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова...
                  Ответить
                • я хочу клон homm )

                  двухмерный

                  можно в принципе вообще написать диздок и забить
                  Ответить
                  • а под какую платформу?
                    Ответить
                    • та хотелось бы кросс-платформу
                      Ответить
                      • хм) TypeScript и Canvas API?:)
                        Java, как майнкрафт?
                        Ответить
                        • Ну кстати веб - неплохая тема. По крайней мере скинуть кому-то игруху очень легко будет.

                          WebGL сейчас, скорее всего, уже везде есть.
                          Ответить
                          • ага
                            и распостранять легко

                            Кстати, мой коллега году в 2009 писал какую-то хуйню под одноклассники или вконтакте, какие-то там помидоры люди у него выращивали, и в какой-то момент это принесло ему нормально денег

                            но сейчас наверное там конкуренция
                            Ответить
                            • Ну и коммуникация с сервером у тебя сразу есть, не надо какие-то свои костыли выдумывать.
                              Ответить
                              • Вопрос в том, хочешь ли ты писать на TS:)
                                Ответить
                                • Нет конечно, но можно с вебассемблером попердолиться.
                                  Ответить
                  • Кстати, если хочешь развивать скиллы — пиши вообще любую хуйню, но правильно. Проработка архитектуры, форматирование, рефакторинг, тесты, CI/CD, VCS, best practices, разнообразные технологии и прочая, и прочая, и прочая. Ну чтобы эта хуйня в итоге выглядела так, как должна выглядеть любая программа, если из процесса разработки исключить «ладно, похуй, лень/времени нет, хуйнём костыль».
                    Ответить
                    • плюсану

                      Правильная разработка чего угодно, даже тулы для бекапа файлов, это прокачка скиллов
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • лучше
                          но шансы на баблишки призрачны, а без баблишек лучше всё таки качать скиллы
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • ... каждую неделю. Тогда вполне реально заработать.
                              Ответить
                            • и продавать ее за $0.99
                              и там еще 9500 таких же игрух такими же питузами написано, может наберешь себе на жвачку, не?
                              Ответить
                            • Если отобьёшь хотя бы половину от тех двадцати пяти долларов, которые «Гугл» требует за регистрацию — считай, повезло.

                              Ну или по игрухе каждую неделю, ага.
                              Ответить
                              • > двадцати пяти долларов, которые «Гугл» требует за регистрацию

                                Один раз в жизни же. Эпл вроде по штуке каждый год дерёт (или драл).
                                Ответить
                        • Вероятность написать в качестве пет-проекта хуйню, которая принесёт баблишки, примерно равна нулю.

                          Тут два стула: либо ты делаешь стартап и получаешь баблишки (хотя вероятность успешного запуска стартапа тоже не очень-то и велика), либо пишешь просто для развлечения/обучения и ничего не получаешь.
                          Первый стул от второго отличается тем, что разработка стартапа — это не программирование, а бизнес. Без понимания ЦА, без внятной модели монетизации, без привлечения инвестиций стартап обречён либо просто сгнить, либо сгнить, утащив за собой финансовое и, в тяжёлых случаях, физическое благополучение незадачливого стартапера. Нахуй оно надо?
                          Ответить
                          • а как же линукс?
                            Ответить
                            • чтобы написать линукс, нужно быть Торвальдсом

                              я реально оцениваю свои возможности)

                              мне не для бабла в любом случае
                              Ответить
                            • Линус один, а нас миллионы (мух).
                              Ответить
                              • И то он взлетел потому что чуваки из GNU рядом подвернулись, которым как раз ядра не хватало. Без всего этого обвеса так и остался бы игрушкой.
                                Ответить
                                • без всего этого обвеса он бы и не запустился.. или спиздил бы юзерленд из миникса.

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

                                  Если бы не навешли, то ядро гну было бы еще в 1990-м готово, и Торвальдс бы сейчас рядовым программистом работал
                                  Ответить
                                  • ну Торвальдс не только ж ядро

                                    это ещё ценный мех git
                                    Ответить
                                  • > или спиздил бы юзерленд из миникса.

                                    Или из BSD
                                    Ответить
                                    • бздя вроде тогда еще на писи не была портирована, но было бы конечно круто: меня подбешивают различия бзд и гну тулов иногда
                                      Ответить
                                • Угу.
                                  Более подходящим примером может быть Нотч, который выроллил 10d20 на 200, удачно попав своим поделием в самое начало популярности жанра. Но, опять же, Нотч один, а индюшатников, засирающих «Стим» своими играми (которые, в массе своей, даже на пет-проект не тянут) в надежде «выстрелить», — десятки, а то и сотни, тысяч.
                                  Ответить
                                  • При этом Нотч подглядел Майнкрафт у Зактроникса
                                    Ответить
                                    • Ну не факт, кстати. «Майнкрафт» начинался как вполне себе generic 3D-поделка, и только потом оброс «мехом». Просто он очень удачно попал в идеальное время, когда у среднестатистических компьютеров стало хватать мощностей на игры-песочницы, среди пользователей ПК разрослась обширная аудитория для них (no offence, еслишо), а самих подобных игр ещё не было.
                                      Ответить
                                      • https://indiegamesplus.com/2009/05/browser_game_pick_minecraft_ma

                                        Markus Persson’s Minecraft is a block-based sandbox building game originally inspired by Infiniminer, but one that requires no installation of any software to play.
                                        Ответить
                                  • > засирающих стим
                                    > на пет-проект не тянут

                                    Ты про сотни хентай-паззлов?
                                    Ответить
                                    • Точно, лол, совсем забыл про эти шедевры игроиндустрии.
                                      Ответить
      • Если хочется писать, то нужно писать. И похуй что.
        Не вижу ничего зашкварного в гейдеве. Область как область.

        Люди разное пишут. Некоторые пишут совершенно ненужную хуйню типа очередного "туду листа с веб мордой" на рельсах
        Ответить
    • Кстати, на чём бы вы начали питушить новый язык?

      Няшная, кэмл, питон, асм? Машинные коды?
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Разрабатывать.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • Я б под питушарский llvm точно бы не затачивался, ибо это сраное говно, заточенное под традиционную питушню в обычных императивных говноархитектурах.

              Я б синтаксис на S-выражениях с гомоиконами сделал бы, а семантику формально описал бы сначала на языке X (где в роли X мог бы быть какой-нибудь Coq, Idris или еще какая-нибудь хуйня для формальной верификации), потом бы свой язык так расширил, чтобы формальную спецификацию его самого можно было б на нем же и описать, а потом бы формально доказал соответствие формальной спецификации описания на языке X той формальной спецификации, которая описана в нем самом. Дальше я б на этом разрабатывал бы управляющие программы для АЭС с полностью доказанной корректностью и соответствием формальной спецификации, отсутствие race condition, deadlock и прочего, и чтоб там обязательно была суперкомпиляция
              Ответить
              • Почему зелёным? Норм же идея.
                Ответить
                • Потому что дохуя сложно, и я этого никогда не сделаю
                  Ответить
                • Есть кстати такая вот херня https://github.com/StanfordPL/stoke которая эвристическим перебором инструкций x86-64 пытается найти самую оптимальную. Это так называемый супероптимизатор (не путат с суперкомпилятором). И вот они там сделали формальную спецификацию x86-64 инструкций:

                  > In addition to searching over programs, STOKE contains verification infrastructure to show the equivalence between x86-64 programs. STOKE can consider test-cases, perform bounded verification all the way to fully formal verification that shows the equivalence for all possible inputs.
                  Ответить
              • показать все, что скрытоvanished
                Ответить
                • Давайте лучше пусть CHayT попробует. Я как-то попробовал потыкаться в этот Coq и неосилил всю эту типопитушню.

                  Какие-то свои идеи по поводу такого языка я тут https://www.linux.org.ru/forum/development/15475716 излагал
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                    • > раст тебе не нравится

                      В расте просто популярные частные случаи порешали. А дальше ехал unsafe через unchecked.
                      Ответить
                    • В расте крайне ограниченная хуйня. Я вот вообще думаю, что надо сделать язык чтоб на нем доказывать невозможность осуществления тайминг-атак на криптоалгоритмы. Т.е. доказать, что на любых входных параметрах такой-то машинный код делает то-то и то-то и количество тактов всегда будет таким-то, независимо от.
                      Ответить
                      • > тактов

                        А как быть с обращениями к памяти?
                        Ответить
                        • во всех ветвях должно быть одинаково
                          Ответить
                          • Т.е. во всех ветках обращаемся к одним и тем же адресам после одного и того же количества тактов? Вроде норм.
                            Ответить
                        • нужно всё загрузить в кеш на стат памяти, чтобы обращение к любому нужному куску данных было всегда одинаковое;)
                          Ответить
                        • Ну значит надо учитывать и эти задержки. Если вся память известно как устроена, с известными задержками при обращении к ней, это тоже может быть учтено. Если какие-то кеши процессора, то там уже может жопа какая-то быть. Надо наверное везде добавлять задержку до такого-то фиксированного времени, чтоб время такого-то алгоритма даже с самыми хуевыми промахами кеша и ошибками в предсказателях переходов было такое же, как и время когда все складывается вообще идеально.
                          Ответить
                          • >Если вся память известно как устроена, с известными задержками
                            то есть нужно знать какие планки установлены, геометрию планок (сколько чипов, их глубину итд), работает ли двухканальность, сколько рангов, а для процессоров до Nehalem еще и версию чипстеа MCH, где контротллер памяти был?

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

                              Т.е. тут либо и это ещё моделировать. Либо сдаться и доказывать более жёсткое ограничение, что code flow тупо не зависит от данных вообще. Тогда пофиг на задержки.
                              Ответить
                  • показать все, что скрытоvanished
                    Ответить
              • А я бы хотел написать язык, который очень близок к Математическому, по максимуму лаконичный, но генерит исходники на других языках.
                Описываешь отношения между классами, опять же, крайне лаконично при помощи кванторов матлогики и всяких операторов, а он дает тебе на выходе исходники классов с уже прописанным взаимодействием.
                Ответить
                • Обратись к Снауту, он тебе пояснит за ма-те-ма-ти-чес-ки-е языки.
                  Ответить
          • а ты?
            Ответить
            • Ну если практически - то как гость выше, наверное: кресты, бизон да ллвм.

              А если по фану - х.з., хотелось бы с мышиных кодов. Но их сейчас вбивать некуда :(
              Ответить
              • тебе хочется именно всё на них написать, или хватит просто генерить их напрямую (вместо llvm?)

                вбивай в хекс редактор;)
                Ответить
                • > вбивай в хекс редактор;)

                  Ну это чит уже. Откуда у меня редактор? С тем же успехом у меня и асм найдётся и няшная и весь остальной компллект.
                  Ответить
                  • стоп.
                    Ты хочешь новый язык, или ты хочешь скосплеить ситуацию, когда у тебя есть только процессор, и больше никаких тулов, чтобы сначала на машинных кодах написать транслятор ассемблера, затем на нем написать компилятор няшной, на няшной -- интерпретаорр питона, и потечь?
                    Ответить
                    • Да хуй знает... И того и другого.

                      > транслятор ассемблера, конпелятор няшной, интерпретатор питона

                      Скорее какое-нибудь фортоподобное ядро, а дальше его расширять до чего-то интересного.
                      Ответить
                      • а вот это было бы прикольно, да: сам язык такой маленький, что спецификация помещается на страничку из тетради, а вся питушня в нем дописана в виде библиотек

                        может, тебе в gcc или llvm поконтрибутить? Будешь по ближе к маш кодам
                        Ответить
                    • > скосплеить ситуацию, когда у тебя есть только процессор

                      Хм, а это идея... И я ведь даже делал это недавно. Спасибо!
                      Ответить
                      • тогда тебе ще нужен программатор и чип, который будет отвечать на тот адрес, с которго процессор стартует. Операционки-то у тебя нет
                        Ответить
                        • Да просто через KVM пустую машину пильнуть, это буквально десять строчек на няшной. Ну и втыкать туда "флешку" с "биосом".

                          З.Ы. Можно ещё пару MMIO портов добавить для терминала.
                          Ответить
                          • я не очень в курсе апиаев kvm. Там можно поменять биос, и разместить код в FFFF:0000 (или откуда оно там стартует я забыл уже)?

                            >Можно ещё пару MMIO портов добавить для терминала.
                            терминал можно пока по com порту подключить: vbox так умеет, например эмулировать ком порт (со стороны хоста это немйдпайп на винде или tcp порт)
                            Ответить
                            • Там пустая машина по-умолчанию. Ты втыкаешь в неё произвольные блоки памяти, проц, настраивашь регистры, пинаешь run и течёшь до первого исключения. Собственно MMIO порты через это исключение в пару строчек пилятся.
                              Ответить
                              • то есть ты например пишешь в IP адрес 123, потом размераешь по этому адресу блок с машинным кодом, и всё заеблось?

                                Интересный конструктор. Лего дупло, как сказал бы Конардо
                                Ответить
                                • Да, примерно так. Причём можно сразу в 32 или 64 бита стартануть, если 16 не нравится.
                                  Ответить
                        • > программатор и чип

                          Ну программатор и старый комп у меня есть.

                          Но там всё сложно, ты не запустишь современную тачку с нуля. DRAM отключена, мосты разведены, даже до ком порта не добраться. И документации на это нет. Удачной отладки.
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • Давай отправим этот коммент чувакам из core boot, а то они что-то ссут браться за недокументированные чипсеты.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • С древним говном легче было бы, наверное. Позапрошлый чипсет даже есть в списке поддерживаемых.

                                    А почему интел доки прячет - х.з. Для чипсетов пятилетней давности, имхо, могли бы и релизить. Вряд ли конкурентам такая древность интересна.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • Когда компания «IBM» впервые попыталась выпустить машины «PS/1» и «PS/2» с закрытой архитектурой, то соснула. От них только одноимённый разъём остался... В итоге первый компьютер на 80386 выпустили не они, а их конкуренты.

                                        А сейчас всё не документировано, но раскупается, потому что другого нет.
                                        Ответить
                                        • тпеперь просто гаечки закрутили очень сильно

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

                                          Остальной софт глядит на всё это через APCI, запускает AML и всё
                                          Ответить
                    • > скосплеить ситуацию, когда у тебя есть только процессор,

                      Кстати, нашёл в шкафу годный девайс для косплея: https://i.imgur.com/4aJ3nBJ.jpg

                      Можно через UART зацепить и течь.
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • Да, stm'ка.

                          Там вон джамперы слева, ими можно выбрать загрузку с "bios". А он понимает простые команды типа read, write и go. Можно и прошить и просто с оперативки пускануть.

                          К сожалению команды двоичные вроде как (я не пробовал еще, обычно через правый разъем для дебаггера заливал).

                          С текстовыми было бы круче, конечно.
                          Ответить
                        • С внешним миром у него дохрена всего - несколько уартов, spi, usb (только как девайс), просто gpio. Вот все те пины с буковками.
                          Ответить
          • сначала можно на бумажке прописать желаемый синтаксис
            Ответить
          • завидую количеству лишнего времени в распоряжении
            Ответить
            • Пиздеть - не мешки ворочать. Помечтаю да забью как всегда.
              Ответить
              • нормально

                я в мечтах уже восемь проектов написал, четыре языка новых выучил, и десять книг прочитал толстенных
                Ответить
    • показать все, что скрытоvanished
      Ответить
    • Ламерский вопрос

      У меня есть в БД non null поле.
      Я по каким-то причинам делаю insert без этого поля и потом update записи с этим полем.

      Если я делаю обе операции в рамках одной транзакции, то БД меня должна послать или это будет норм?
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • Транзакция транзакцией, но каждая операция проверяется отдельно.

        Т.е. тут либо надеяться, что ORM смёржит операции. Либо самому сразу заполнять как положено.
        Ответить
        • Спасибо.

          А если, например, более сложный пример.

          Есть A и B, у которых есть отношение 1-to-1 и у A ключ для этого отношения non null.
          Еще между A и B есть отношение 1-to-many.

          Я создаю A, потом создаю B (такая логика), добавляю B в A на оба отношения и пытаюсь это дело записать в базу. ORM меня посылает по причине "Unable to save changes because a circular dependency was detected in the data to be saved"

          как это решить идиоматично без перехода на nullable?
          Ответить
          • у тебя не может быть взаимного FK not null, с одной стороны обязательно должен быть nullable
            + т.к. у тебя EF (а у тебя скорее всего именно он), то он ебанется при попытке удаления "каскадом", поэтому тебе придется сначала руками установить null в ту связь, которая nullable, сохранить, а потом уже удалять сущность, которая за собой и вторую вытерет
            Ответить
            • а если у меня в 1-to-1 on delete restrict?

              (мне его достаточно по идее, если в 1-to-many on delete cascade)
              Ответить
              • насколько я помню, EF вообще дико поебать на он делит в субд, он всё исполнит сам, сделает закат солнца руками

                так что это сахарок для операций админа базы в консоли (или для сикель скриптов миграции)
                Ответить
                • https://docs.microsoft.com/en-us/ef/core/saving/cascade-delete

                  хз, вроде что-то делает

                  спасибо. если я правильно понял, когда я хочу гарантировать, например, что у поста в блоге всегда есть актуальная ревизия, я всё равно ключ помечаю как nullable и все гарантии проделываю в логике (то есть не проёбываю его записать)
                  Ответить
                  • поцчему вы не хотите сделать колонку "is_actual" у ревизий, и ссылаться ими на пост?

                    Или почему вообще не считать актуальной самую последнюю по дате публикации?

                    Денормализация ведет к нарушению консистентности, ко!

                    На пост ссылкаются три ревизии
                    А он сам на четвертую
                    А она на него нет
                    и лол
                    Ответить
                    • Потому что "максимум по каждой палате" - не самый приятный запрос. Хотя работает, конечно.

                      Попробуй его написать на досуге.
                      Ответить
                      • если есть Window Functions, то очень даже приятный
                        А они есть в постгре и ms-sql
                        Ответить
                    • смысл в том, чтобы попытаться гарантировать констрейнтами в бд, что у каждого поста всегда есть одна актуальная ревизия

                      это можно сделать для твоего варианта?
                      Ответить
                      • как минимум одна?

                        Ну нужно сделать видимо такой констреинт, вот руками его написать, и проверять отложенно (если субд позволяет)

                        так выедь нул тебе такой гарантии не даст
                        не?
                        Ответить
                        • нет, актуальная одна

                          есть 1-to-many для всех
                          и 1-to-1 для актуальной

                          > сделать видимо такой констреинт
                          - руками?
                          Ответить
                          • ну да, руками, через триггер.

                            А в твоем варианте у тебя не будет гарантии тоже, зато будет денормализация и потенциальная неконсистентнгость
                            Ответить
                        • а, или типа при наличии 1-to-many мы можем смотреть актуальную по твоему ключу?

                          ну да

                          но 1-to-many не гарантирует, что с другой стороны непустое множество же?
                          Ответить
                        • > так выедь нул тебе такой гарантии не даст

                          - правильно. но с не-нул похоже не получается вообще :)
                          Ответить
                      • ты всегда можешь это гарантировать констрейнтом unique
                        но курение ведёт к импотенции, а алкоголизм (привет, МАКАКА) к циррозу
                        вопрос лишь получаешь ли ты удовольствие и кто сдохнет раньше
                        Ответить
                        • я сначала не понял, что ты про unique (a_id, is_last)

                          выглядит недобро)
                          Ответить
                          • нормально выглядит
                            в постгресе даже есть partial индексы (чтобы задать кондишен такой, чтобы нуллы не хранить, нахуй они не нужны будут для этого задачи)
                            Ответить
            • >у тебя не может быть взаимного FK
              А зачем кстати это надо?

              Если у A есть указатель на B, то я могу найти все A, которые указывают на нужную мне B по индексу обычно, у ключей же бывают индексы
              Ответить
              • Когда у тебя денормализация вида last_b_id в таблице А и B.a_id в таблице B
                Ответить
                • А нельзя сделать булевую колонку "is_last" в B? И констреинт на нее, дескать из всех B-->A один должен быть LAST
                  Ответить
                  • я там выше написал, что можно
                    делается unique (a_id, is_last), но требуется для всех непоследних делать is_last null, а то не получится магии

                    при этом, замечу, бд НЕ прогарантирует существование (a_id, is_last) = (<your>, true)
                    Ответить
                    • и когда у тебя ебучий постгрес, всегда надо иметь в виду, что банальный update предыдущего последнего на is_last = null - и вот ты получил в таблице старую строку под вакуум
                      т.е. таблица всегда будет дырявая (живи теперь с этим)

                      она будет также дырявая, когда ты будешь делать update родительской таблицы, чтобы перезадать там last_b_id, но там, скорее всего, это будет не единственное поле, которое придется обновить, так что ну и ладно
                      Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • предлагаешь триггером переапдейчивать предыдущую ревизию как актуальную, а при удалении единственной актуальной запрещать это делать (тогда ты не порвёшь цикличную связь, и вообще всё дико лагать начнет, не надо так делать)
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • почему бы это не делать в бекенде? бекенд вражина пишет? зачем лишняя работа на стороне субд

                            триггеры нужны лишь в одном случае - чтобы бекенд не знал о магии (потому что не смог или потому что ему не нужно вообще совать туда нос)

                            а мы обсуждаем не магию, а нормальную, ИЗВЕСТНУЮ беку технологию, на которую этот пидор будет опираться в своих орм-селектах, и ещё как!
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • просто написав триггер, ты заставляешь субд выполнять его
                                это не так и дешево
                                учитывая, что нормальный бекенд и так сделает эти проверки и не будет совать говно, ты просто на каждой модификации начинаешь тратить цпу (чтобы убедиться, что ну да, валидно)

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

                                кстати, не все ОРМы любят когда СУБД самомодифицируется - им надо помечать такие колонки как генератед-бай-субд (чтобы они не рассчитывали, что в бекенде самая правильная инфа, а зачитывали при каждом инсерте, апдейте через returning - да сука даже не каждая ОРМ умеет в returning! привет, хибернейт)
                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • Ну ORM тратит время бека, который хорошо параллелится. А триггер тратит время базы, которая параллелится хуёво. Да ещё и посреди транзакции. Как-то так же?
                                    Ответить
                                  • а вот кстати начал писать триггер

                                    и понял, что не могу его сделать AFTER INSERT, потому что, когда я инсерчу "пост" в базу, то actualRevisionId у него ещё нет, а в триггере как раз проверяется, а не NULL ли у нас actualRevisionId

                                    а AFTER UPDATE кмк ломает саму идею использования триггера в данном случае (потому что а хрен его знает, когда этот апдейт прилетит)

                                    или?
                                    Ответить
                                    • тебе нужен триггер after insert на вставку новой ревизии, чтобы она сходила и обновила в родителе last_revision_id на себя

                                      вообще в целом калечная схема из "поста" и "ревизии", почему оно не в единой таблице?
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • ну и? что такое версия? у неё же будет своя дата создания, свой контент?
                                          Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • более разумным видится схема posts и archive_posts
                                              при обновлении "странички" или удалении - старая версия уходит из posts в архив

                                              у вас всегда актуальная версия в "активной" таблице, а историю посмотрите отдельным запросом
                                              Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • в archive_posts можно хранить не все колонки из активного, если что
                                                  но не вижу ничего плохого хранить весь слепок
                                                  Ответить
                                                  • показать все, что скрытоvanished
                                                    Ответить
                                                    • а почему FK

                                                      это тогда придётся при обновлении поста лезть в архив и всем ключ апдейтить на новый?

                                                      не лучше ли назначить какой-то айдишник "серии постов" и сделать его частью PK?
                                                      Ответить
                                                      • показать все, что скрытоvanished
                                                        Ответить
                                                        • >>это тогда придётся при обновлении поста лезть в архив и всем ключ апдейтить на новый?
                                                          > да
                                                          нет, нахуя
                                                          опять дырки в таблицах постгреса придумали
                                                          Ответить
                                                          • показать все, что скрытоvanished
                                                            Ответить
                                                            • чтобы быстро найти все версии не обязательно в старье хранить ссылку на "уникальный айди последней ревизии"
                                                              достаточно хранить "айди сука поста"

                                                              который придумать ровно 1 раз при инсерте самой первой ревизии и никуда не менять всю дорогу
                                                              айди ревизии можно хранить вторично в активной таблице и заносить как ПК в олдовую
                                                              Ответить
                                                              • показать все, что скрытоvanished
                                                                Ответить
                                                                • posts:
                                                                  - id primary key,
                                                                  - revision_id not null unique default gen_random_uuid(),
                                                                  - bullshit

                                                                  archive:
                                                                  - revision_id primary key,
                                                                  - post_id not null references posts (id),
                                                                  - archived timestamptz,
                                                                  - lesser bullshit (can find actual bullshit by FK to posts)

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

                                                                  все что выше написано - так обычно делается АУДИТ для данных - чтобы хранить полное четкое состояние, кто зачем когда менял (юзер, сессия), чтобы при работе с архивным хранилищем всегда можно было восстановить состояние и родительских записей (а не смотреть на их состояние сейчас), а там и брекет валидности через GiST индекс, и партишионинг, и всякое такое
                                                                  Ответить
                                                                  • показать все, что скрытоvanished
                                                                    Ответить
                                                                    • > А зачем revision_id в Posts?
                                                                      больше пользы, чем вреда

                                                                      как минимум клиенту, который попросил записать его изменения, сообщить "твоя ревизия вот такая, спасибо пожалуйста", а потом он селектит такой, а ему "знаем знаем, она в архиве уже"

                                                                      тебе не жалко места, надеюсь?

                                                                      > Можно это решить наследованием таблиц в постгрес?
                                                                      лучше не надо
                                                                      * чтобы селектить только из актуальных постов (а это 99% чтений имхо), придется писать select from only posts, врядли EF так умеет, и все заебутся
                                                                      * наследование, насколько я помню, хуево дружит с партиционированием

                                                                      ну и вообще, наследование это про base-type - derived-type (один из вариантов реализации), сова на глобус это всегда чревато
                                                                      Ответить
                                                                      • показать все, что скрытоvanished
                                                                        Ответить
                                                                        • Я могу завтра уточнить все ли хорошо с объектом, который я сегодня обновил? Могу получить то состояние, которое записывал?
                                                                          Где денормализация-то? Нет такого айди current, это не уникальные сведения о ревизии
                                                                          Ответить
                                                                        • > что добавление bullshit2 в posts всегда приведет к добавлению его в archive

                                                                          Ит депендс.
                                                                          Но да, я сейчас как раз и запиливаю поебень, которая примерно по этой схеме вообще 2 базы линкует - активную и архивную. Да так, чтобы бекенд не думал об этом, лол. Изменения в активной отражаются в архивной в виде аудита ревизий. Для всего.
                                                                          Ответить
                                                                          • показать все, что скрытоvanished
                                                                            Ответить
                                                                            • Для любой таблицы active.foo есть архивная таблица archive.foo с не меньшим набором колонок.
                                                                              И там и там есть audit_info jsonb, в котором как раз куча всего лежит - номер ревизии, время создания, модификации, автор, сессия...

                                                                              Инсерт в active = инсерт в архив.
                                                                              Апдейт в active меняет ревизию = апдейт в архив даты окончания валидности старой ревизии + инсерт новой. Делит из активной = апдейт старой и инсерт финальной операции D.

                                                                              PK на активной = индексы на архивной.
                                                                              Архивная партишионируется (в тч хорошо сама хранит свой слепок активных).

                                                                              Это все позволит строить норм отчёты и выгружать исторические данные, ссылающиеся на соответствующие тому же моменту времени версии родительских сущностей.

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

                                                но это реально решает мою проблему
                                                Ответить
                                              • а какие best practices в таком случае?

                                                это надо скрипт запускать, который базу перелопатит, или как-то миграциями?
                                                Ответить
                                      • > почему оно не в единой таблице?

                                        Типа дропнуть "пост" и просто иметь "ревизии", которые будут связаны неким ид?

                                        если нет, то тогда покажи пример
                                        Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • ну на голом sql я бы так наверное и сделал, а с орм надо ковырять, выйдет или нет
                                        Ответить
                              • > руками лазить
                                > если в СУБД может быть неконсистеность, то рано или поздно она там будет

                                За примером далеко ходить не надо...
                                Ответить
              • Блин, ди первый успел :(
                Ответить
      • показать все, что скрытоvanished
        Ответить
      • неламерский ответ
        констрейнты бывают deferrable - т.е. их проверка происходит не per pow, а per statement или даже per transaction commit

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

        так вот, в постгресе, например, not null это констрейнт, который нельзя сделать deferrable (а форин кей можно)

        но, возможно, в твоей СУБД можно

        а ещё в твоей ситуации логично сделать вывод, что ты бы хотел default значение своей not null колонке или триггер написать, ну или не инсертить в неё нулл
        Ответить
        • про deferrable круто, спасибо
          Ответить
        • > deferrable

          Да, собеседование по базам я не пройду :(
          Ответить
          • Ну и похуй. А зачем тебе?
            Ответить
          • ну это вещь со звёздочкой)
            где ещё как не на ГК сеять знания об этом
            Ответить
          • показать все, что скрытоvanished
            Ответить
            • > чем INNER отличается от OUTER джойна

              Я тоже всё через запятую и условия в where ебашил. Пока вдруг не попалась таблица с null'ом. В этот момент я задумался: "а может как-то можно и цикл в коде не писать и строчки с нуллами не проёбывать?" И прочитал про джойны.
              Ответить
              • так ты небось для работы субдой не занимался?

                >Эйлера
                вечно путаю его с венна
                Ответить
                • как говорится,

                  это надо было в институте запомнить
                  Ответить
                  • ты давно ВУЗ окончил?
                    Ответить
                  • кстати именно вуз годовым курсом по бд многому научил

                    так, что я был морально готов на первой работе дописывать схему данных по биллингу на проде, а один из курсачей вообще был про олап
                    Ответить
                    • Повезло

                      У нас был MS Access и препод, который говорил «Нахера мне ваши лабы в электронном виде, я не собираюсь портить глаза»
                      Ответить
                      • надо было идти в немецкое пту
                        а то наготовили ма-те-ма-ти-ков на свою голову
                        хорошо что я ин-жы-нер
                        Ответить
                      • MS Access кстати прекрасный тул. С его помощью можно легко и быстро делать десктопные субд на одного. С формочками, поиском и отчетами. И вообще без программирования.

                        Хуй знает, что его ненавидят все
                        Ответить
                        • та наверное нормальный тул

                          но лучше б наверное сикулайт показывали хотя бы
                          Ответить
                • Ну эт курсовик был. Там же я открыл для себя SQL инъекции и кошерную передачу аргументов.

                  А по работе я базы почти не трогал. Так, мелкие скрипты, которые с готовой базой работали.
                  Ответить
    • показать все, что скрытоvanished
      Ответить
      • Это сгенерено, я надеюсь? Там ведь и обратное будет?
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • if (false !== stripos($data, "HTTP/1.0 200 Connection established\r\n\r\n")) {
            			$data = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $data);
            		}
            		if (false !== stripos($data, "HTTP/1.1 200 Connection established\r\n\r\n")) {
            			$data = str_ireplace("HTTP/1.1 200 Connection established\r\n\r\n", '', $data);
            		}

            много вкусногово
            https://github.com/WordPress/WordPress/blob/master/wp-includes/SimplePie/HTTP/Parser.php
            Ответить
            • Найди 10 отличий.
              Ответить
            • public static function output_javascript()
              	{
              		if (function_exists('ob_gzhandler'))
              		{
              			ob_start('ob_gzhandler');
              		}
              		header('Content-type: text/javascript; charset: UTF-8');
              		header('Cache-Control: must-revalidate');
              		header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
              		?>
              function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
              	if (placeholder != '') {
              		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
              	}
              	else {
              		document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
              	}
              }
              //
              		<?php
              	}
              Ответить
      • По-венгерски интересно: среда = серда, четверг = чутёрток, пятница = пентек, суббота = сомбат. Вероятно, влияние соседей.
        Ответить
        • Да, балканские славяне повлияли на них чутка, и на румынов тож

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

            В школе в качестве иностранного я изучал немецкий, и нам рассказывали только про Sonnabend. Вариант Samstag я узнал намного позже.

            А вот теперь прочитал, что вариант Sonnabend употреблялся преимущественно в ГДР. Поскольку наши учебники писали те же люди, которые писали советские учебники, а те учебники были ориентированы на изучение ГДР (как члена Организации Варшавского Договора), то вполне ожидаемо, что в них был гэдээровский вариант.

            Samstag произошло от еврейского «шаббат» (от которого произошла и наша «суббота»). А вот Sonnabend — это «солнечный вечер» — отсылка к Sonntag — «солнечный день» — немецкому названию воскресенья. Т. е. Sonnabend — это как бы вечер перед воскресеньем. Придумали его, чтобы заменить ветхозаветный термин, причём чуть ли не в восьмом веке, когда вовсю шло крещение Европы.
            Ответить
    • Такой вопрос, питухи.
      Нужно получить загранпаспорт, для этого требуется военный билет (при наличии), или справка с военкомата (важно, что они её запрашивают сами, и не нужно физически приходить в военкомат).

      Ещё нужно указать места учебы и работы за последние 10 лет. Нахуй это надо? Может, лучше ничего не указывать? Типа вуз окончил, теперь безработный (математики никому не нужны).
      Потому что есть такая хуйня, что военкомат имеет право отправить повестку через работодателя, а уклонение от подписанной повестки - уголовка. С другой стороны, они и так могут через налоговую получить инфу, если заинтересуются, но так то им это делать лень.
      Да и сам запрос справки может их стриггерить на что угодно, может там уже забыли про меня.
      Что думаете? Не хотелось бы в последний призыв залететь.
      Ответить
      • Уважительной причины нету что ли, просто повестки игноришь? Я бы год подождал тогда, раз последний.

        Места учебы и работы вроде чтобы проверить, что ты с секретной инфой не работал. Не то чтобы они сами не могли это сделать...
        Ответить
      • > военкомат имеет право отправить повестку через работодателя
        какие-то страшилки, в первый раз слышу это

        а вот работодатель обязан в военкомат передавать сведения о своих работничках, но если не подает, то штраф 500 рублей
        я за 4 года ни разу не подавал
        Ответить
        • Как они узнают в какой именно военкомат нужно заносить? Я вот всё обещаю да обещаю работодателю какую-то хуйню из военкомата принести (уже не помню какую), никак не приношу, но все всё понимают, и всем похуй.
          Ответить
          • ладно, я давно знакомился с правовой базой
            штраф не 500р, а от 300р до 1000р, и да, вроде должны знакомить с повистками и направлять работников для постановки на учеты (а также вести журналы, сделать стенд с информацией о "кто в армии служил, тот в цирке не смеется" и т.д.)

            почитай https://kontur.ru/articles/5158
            затем уточни у своего работодателя, соблюдает ли он всё в полной мере

            > в какой именно
            по месту нахождения юр лица
            Ответить
            • >> Федеральный закон от 06.02.2019 № 8-ФЗ внес изменения в ст. 4 Закона 53-ФЗ, тем самым вменил работодателям новые обязанности. Все организации должны будут сами находить работников, которые должны состоять на воинском учете, но избегают военкоматов, и в двухнедельный срок сообщать о них в военные комиссариаты. Таким сотрудникам работодатель должен вручать направление в военный комиссариат для постановки на воинский учет. Ранее в обязанности входило только передавать повестки из военкомата.

              Какой багор )))
              Ответить
              • > Все организации должны будут сами находить работников, которые должны состоять на воинском учете, но избегают военкоматов
                Чобля? А как они это должны делать? Нанимать частных детективов, чтобы они следили за всеми работниками?
                Ответить
                • Я думаю если военкомат пришлёт соответствующую бумажку всё-таки. Просто формулировка хуёвая.
                  Ответить
              • Кстати, тут же помнится искали способ как избавиться от сотрудника, которого не получается уволить...
                Ответить
                • У хохлов с этим проще, у них для этого достаточно коллективного заявления от трех и более сотрудников.
                  Ответить
                  • В Украине погромисты по трудовому кодексу не работают
                    У тебя есть договор обо указании услуг, работодатель может его разорвать в одностороннем порядке и у тебя есть в среднем две недели чтобы пойти нахуй или написать в спортлото
                    Ответить
                    • Почему 2 недели? Звучит как день в день нахуй идёшь, или в арбитраж (вы же ИП все, а значит, отношения юрлиц)
                      Ответить
                      • флп это не юрлицо

                        фл - физлицо

                        в остальном верно, сколько дадут дорабатывать, зависит от конкретного работодателя
                        Ответить
                        • Если ты с физлицом в нашей стране заключил договор, то ты налоговый агент, минимум НДФЛ удерживаешь и перечисляешь (13%). А такой контрагент ещё и может заставить эти отношения признать трудовыми.

                          ИП же сам себе уже учёт ведет
                          Ответить
                          • > физлицом

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

                            Или сейчас что-то изменилось?
                            Ответить
                            • с физлицом - разовый договор, ГПД (гражданско-правовой договор)
                              это допустимо
                              если вторая сторона - юрлицо-резидент, то она автоматически налоговый агент, которая признает уплату в адрес физлица доходом физлица и удерживает сама, можно потом НДФЛ-2 взять при желании (или увидеть на сайте налоговой спустя 1.5 года, как дойдут и обработаются отчеты, которые и так каждый месяц/квартал уходят)
                              Ответить
                            • а никто и не горит
                              ГПД делают, когда это самый удобный вариант, чтобы получить за оговоренный срок результат работ, который по плечам одному человеку, но который сам при этом не ИП и не собирается

                              привлечь консультанта, например
                              Ответить
                        • Да вроде флп это юрлицо
                          Невозможность засудить работодателя в основном происходит из-за формы договора
                          По договору ты оказываешь услуги по тз и скидываешь акты по которым тебе платят
                          Формально работодатель просто перестает тебе выдавать тз и ты не можешь требовать за него оплату
                          Ответить
                          • Но и ты, получается, можешь его в любой момент кинуть, закрыв текущее ТЗ и не принимая следующие?
                            Ответить
                          • чувак, не гони

                            ты не знаешь, как расшифровывается ФОП?

                            найди мне там пожалуйста слово "юридический(-ое)"
                            Ответить
                            • ну формально ИП это тоже не юридическое лицо, это особый вид хозяйственной деятельности

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

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

                                  Если я правильно понял, конечно.
                                  Ответить
                                  • насколько я помню, там как раз ограниченный перечень деятельности, типа нянечек для детей
                                    хз насчет фрилансеров

                                    впрочем, вот https://hh.ru/article/23928
                                    если кому-то интересно
                                    фрилансеры там, да
                                    Ответить
                                    • Х.з., возможно. Я просто эту новость почему-то в теме о фрилансерах слышал.
                                      Ответить
                      • Две недели это не для тебя сделано а для работодателя
                        Конкретный срок в контракте обычно
                        Ответить
              • Кстати, а ИП обязан сдать себя в военкомат?
                Ответить
      • Опять ветка в говно скатилась.
        Ответить
    • Кто знает на чем написан GitHub?
      Я вот идею одну имею чтобы реализовать и продать её Майкрософту.
      Это сделает Github сильно удобнее.
      Как думаете, сколько они заплатят?
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • показать все, что скрытоvanished
        Ответить
        • У них хитро: набор сервисов, написанных на разных языках, которые друг с другом обмениваются сообщениями. «Руби» там тоже есть, правда, я не уверен, что на «Рельсах». С «Твиттором» спутал.
          Ответить
          • Ну может быть и на микросервисах, значит язык не важен, важна среда обмена между ними.
            Ответить
        • Вот тут количество проектов на «Руби» зашкаливает, так что похоже на правду:
          https://github.com/github
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • А что неправильно?
              Переведите на PHP.
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • А я знаю что неправильно.
                  Это статическая питушня которую нужно делать поверх динамической через try(:to_i), ведь может придти и не строка вовсе.
                  А еще тут писали что крестовики натыкаются на неудобства своего инструмента.
                  У крестобога в отличие от динамов таких проблем не бывает.
                  Ответить
                  • try там не потому что не строка, а потому что в строке не число, имхо.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Передал туда переменную PATH и получил 0. И пошло поехало, ищи свищи потом где ошибка.
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • Незачем, но я думаю метод try для этого и задуман, чтобы проверять тип на ходу.
                            Такое поведение рано или поздно придется заложить в сложную систему, если не захочешь описать ручками все возможные варианты и по максимуму обобщить.
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • This method is defined to be able to write
                                @person.try(:name)

                                instead of
                                @person.name if @person

                                try calls can be chained:
                                @person.try(:spouse).try(:name)

                                instead of
                                @person.spouse.name if @person && @person.spouse


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

                                REM: Вообще от модифицирующих себя программ отказались еще в 60-х70х. Усложняло отладку донельзя.
                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • Так в том то и дело, что в try можно передать не только to_i.
                                    У меня не стоят рельсы и я на них никогда не писал.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • Да это старый как мир минус динамопитухов. Сама по себе динамическая тупизация не гарантирует что за нужным тебе идентификатором находится нужный тебе тип. Отсюда и все эти извороты с ручной проверкой типа.
                                        Ответить
                                        • Именно поэтому придумали «утиную типизацию».
                                          Ответить
                                          • Ну в питухоне она всё равно не универсальна, была. И всё равно в некоторых случаях пришлось бы вручную проверять методами-костылями.
                                            Сейчас вроде завезли возможность указать тип аргумента.
                                            Что там у рельсов, JS, PHP я хз.
                                            Ответить
                  • показать все, что скрытоvanished
                    Ответить
            • > interpreting leading characters in str as an integer

              Ахаха, и тут отсечения. Мир ебанулся.
              Ответить
    • Перекат!

      https://govnokod.ru/26966
      https://govnokod.xyz/_26966/
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий