- 1
Питушня #7
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+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
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* @GovnokodBot в «Telegram»
* https://vorec.space/ (глоссарий Говнокода)
Если нет, то да, именно так и нужно)
но ты-то да
не узнаешь же, пока не попробуешь
однако же гейдев это зашквар и в принципе практическое отсутствие каких-то скиллов, которые можно поднять (ну, кроме A* лол), так что я держусь
но почему нормальные люди пишут для себя движки бд, а мне хочется свой хомм? это анскильность? вон из профессии?
а) или полезно
б) или хотя бы прокачивало скилл
с полезным сегодня тяжеловато (практически все полезные программы уже реализованы раз по 100500 во всех формах и позах)
остаются скиллы.
конечно, даже в игре можно набить какой-то скилл
например, управление принятием решений для "ИИ"
Чарльз Дьюэлл, директор Патентного бюро США, в 1899 году сказал: “Все, что могло быть изобретено, уже было изобретено.
Авторы свиней с питицами считают мульоны, и передают тебе привет
чуваки сделали охулион проектов, чуть не закрылись, после чего один выстрелил и они даже явно не поняли, почему
мобильный гейдев это вообще полное говнище, не ходите туда, пацаны
Напиши игру, в которой противники будут управляться нейросетками и постоянно улучшаться генетическими алгоритмами. Опционально — распределённо, чтобы все играющие сливали на сервер данные об обучении. Назови, например, «Skynet».
> шейдеры
> кватернионы
Я так Кубик Рубика слепил с моделями на тыщи полигонов, попиксельным освещением и 16х антиалиасингом.
Собственно на этом я удовлетворился и забил на графику и гейдев.
Ой зря, ой зря. Если «гейдев» — это не натягивание текстурок на болванки в «Юнити», а что-то более хардкорное, вроде движка с нуля (мы же про пет всё таки говорим), то от ма-те-ма-ти-ки и прочих ал-го-рит-мов там просто охуеть можно.
> но почему нормальные люди пишут для себя движки бд, а мне хочется свой хомм?
Ну, мне вот не хочется движки БД, мне всё время хочется писать вореции вообще и нейровореции в частности.
С современными графическими API пока цветной треугольник нарисуешь уже бицуха лопнет.
А сейчас - вспомни матан с матрицами, напиши вершинный и пиксельный шейдеры, скомпиль и слинкуй их, передай параметры в шейдер, наполни вершинный буфер координтами, наполни индексный буфер индексами вершин, отправь всю эту хуйню в видюху, зафлаши пайплайн...
Старое API же выбросили на помойку, на телефонах и в вебе теперь только минимальный профиль где всё по хардкору.
2Д-то не сильно изменилось.
с точки зрения opengl вроде нет никакой особой разницы, всё отличие в сложности трансформаций, которые придётся делать
разумеется всё жутно не оптимально было
зато почти как в uses graph;)
Вроде жопа в том, что аппаратно ускоренных 2д апи в операционках просто не существует. Директ дроу закопали, GDI и X - треш лютый.
>разумеется всё жутно не оптимально было
если ты делаешь, к примеру, квест, то ты можешь 3Д не трогать
>ускоренных 2д
вроде бы 2Д должна делать карта, но так как 99% игр 3Д, карте нет резона делать это быстро для адских резолюшенов
зырь сюды
https://docs.microsoft.com/en-us/windows-hardware/drivers/display/optional-graphics-driver-functions
Плюс всякие няшные эффекты и системы частиц на шейдерах. Даже в квесте пригодится.
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
вистобляди соснули
Ну это вендорлок, так не интересно. С OpenGL ты и на винде и на маке и на прыщах запустишься и на мобилках и даже в вебе. А это чисто винда.
А для создания контекста можно готовую либу взять.
А с обычным 2Д интерфейсом ничего сложнее примитивов и bitblt в руках держать не приходица.
Хотя ничего серьезного наверное и не напишешь
Да это сишка обрезанная. Там больше матан учить, чем этот язык. В любом случае, можно их из туториала или каких-нибудь статей скопипастить.
вот как тут
https://youtu.be/-iQIcibJ8-c?t=166
но тогда есть шанс, что игру не сделаешь игру никогда, потому что будешь задрачивать только движок
сделай 3Д движок без пола и потолка, как в wolf3d
что меня впечатлило, так это то, что через несколько лет взял этот проект, сделанный в VS, открыл в VS for Code, слил зависимости, сбилдил и оно заработало (ну, не считая ужасного перфоманса из-за особенности рендеринга). какая совместимость )))
двухмерный
можно в принципе вообще написать диздок и забить
Java, как майнкрафт?
WebGL сейчас, скорее всего, уже везде есть.
и распостранять легко
Кстати, мой коллега году в 2009 писал какую-то хуйню под одноклассники или вконтакте, какие-то там помидоры люди у него выращивали, и в какой-то момент это принесло ему нормально денег
но сейчас наверное там конкуренция
Правильная разработка чего угодно, даже тулы для бекапа файлов, это прокачка скиллов
но шансы на баблишки призрачны, а без баблишек лучше всё таки качать скиллы
и там еще 9500 таких же игрух такими же питузами написано, может наберешь себе на жвачку, не?
Ну или по игрухе каждую неделю, ага.
Один раз в жизни же. Эпл вроде по штуке каждый год дерёт (или драл).
$ 99 за перса, 399 за эентепрайс
аннуали
Тут два стула: либо ты делаешь стартап и получаешь баблишки (хотя вероятность успешного запуска стартапа тоже не очень-то и велика), либо пишешь просто для развлечения/обучения и ничего не получаешь.
Первый стул от второго отличается тем, что разработка стартапа — это не программирование, а бизнес. Без понимания ЦА, без внятной модели монетизации, без привлечения инвестиций стартап обречён либо просто сгнить, либо сгнить, утащив за собой финансовое и, в тяжёлых случаях, физическое благополучение незадачливого стартапера. Нахуй оно надо?
я реально оцениваю свои возможности)
мне не для бабла в любом случае
А ядра не было у гнушников, потому что им Таннебаумы лапши на уши навешали про микроядра, и послали их в бесконечное путешествие.
Если бы не навешли, то ядро гну было бы еще в 1990-м готово, и Торвальдс бы сейчас рядовым программистом работал
это ещё ценный мех git
Или из BSD
Более подходящим примером может быть Нотч, который выроллил 10d20 на 200, удачно попав своим поделием в самое начало популярности жанра. Но, опять же, Нотч один, а индюшатников, засирающих «Стим» своими играми (которые, в массе своей, даже на пет-проект не тянут) в надежде «выстрелить», — десятки, а то и сотни, тысяч.
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.
> на пет-проект не тянут
Ты про сотни хентай-паззлов?
Не вижу ничего зашкварного в гейдеве. Область как область.
Люди разное пишут. Некоторые пишут совершенно ненужную хуйню типа очередного "туду листа с веб мордой" на рельсах
Няшная, кэмл, питон, асм? Машинные коды?
Я б синтаксис на S-выражениях с гомоиконами сделал бы, а семантику формально описал бы сначала на языке X (где в роли X мог бы быть какой-нибудь Coq, Idris или еще какая-нибудь хуйня для формальной верификации), потом бы свой язык так расширил, чтобы формальную спецификацию его самого можно было б на нем же и описать, а потом бы формально доказал соответствие формальной спецификации описания на языке X той формальной спецификации, которая описана в нем самом. Дальше я б на этом разрабатывал бы управляющие программы для АЭС с полностью доказанной корректностью и соответствием формальной спецификации, отсутствие race condition, deadlock и прочего, и чтоб там обязательно была суперкомпиляция
> 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.
Какие-то свои идеи по поводу такого языка я тут https://www.linux.org.ru/forum/development/15475716 излагал
В расте просто популярные частные случаи порешали. А дальше ехал unsafe через unchecked.
А как быть с обращениями к памяти?
то есть нужно знать какие планки установлены, геометрию планок (сколько чипов, их глубину итд), работает ли двухканальность, сколько рангов, а для процессоров до Nehalem еще и версию чипстеа MCH, где контротллер памяти был?
> Надо наверное везде добавлять задержку
кеш же можно вовсе отключить, просто будет не быстро
Т.е. тут либо и это ещё моделировать. Либо сдаться и доказывать более жёсткое ограничение, что code flow тупо не зависит от данных вообще. Тогда пофиг на задержки.
1024--, ты?
Описываешь отношения между классами, опять же, крайне лаконично при помощи кванторов матлогики и всяких операторов, а он дает тебе на выходе исходники классов с уже прописанным взаимодействием.
А если по фану - х.з., хотелось бы с мышиных кодов. Но их сейчас вбивать некуда :(
вбивай в хекс редактор;)
Ну это чит уже. Откуда у меня редактор? С тем же успехом у меня и асм найдётся и няшная и весь остальной компллект.
Ты хочешь новый язык, или ты хочешь скосплеить ситуацию, когда у тебя есть только процессор, и больше никаких тулов, чтобы сначала на машинных кодах написать транслятор ассемблера, затем на нем написать компилятор няшной, на няшной -- интерпретаорр питона, и потечь?
> транслятор ассемблера, конпелятор няшной, интерпретатор питона
Скорее какое-нибудь фортоподобное ядро, а дальше его расширять до чего-то интересного.
может, тебе в gcc или llvm поконтрибутить? Будешь по ближе к маш кодам
Хм, а это идея... И я ведь даже делал это недавно. Спасибо!
З.Ы. Можно ещё пару MMIO портов добавить для терминала.
>Можно ещё пару MMIO портов добавить для терминала.
терминал можно пока по com порту подключить: vbox так умеет, например эмулировать ком порт (со стороны хоста это немйдпайп на винде или tcp порт)
Интересный конструктор. Лего дупло, как сказал бы Конардо
Ну программатор и старый комп у меня есть.
Но там всё сложно, ты не запустишь современную тачку с нуля. DRAM отключена, мосты разведены, даже до ком порта не добраться. И документации на это нет. Удачной отладки.
А почему интел доки прячет - х.з. Для чипсетов пятилетней давности, имхо, могли бы и релизить. Вряд ли конкурентам такая древность интересна.
А сейчас всё не документировано, но раскупается, потому что другого нет.
интел делает и чипсет (ну коммуникейшен хаб или южный мост по старому) и проц. Документировать нужно разве что писателям биоса с сборщикам материнок, но они могут подписать NDA
Остальной софт глядит на всё это через APCI, запускает AML и всё
Они им просто готовый драйвер для чипсета выдадут без исходников. Там же модульное всё.
Вай нот? Это же обычный PE файл. И интерфейсы там - обычные сишные структуры с указателями на функции.
Что мешает выдать бинарный драйвер и хедер с его интерфейсом? По-моему ничего.
Дык... он опенсурсный, tianocore называется, можешь с гитхаба качнуть. Вроде сейчас вообще все прошивки на его основе запилены и отличаются просто процентом внесённых багов кастомизаций и собственных дров.
Ну у тебя UEFI уже? На хабре была тула для разбора прошивки на PE файлы. Можешь покопаться если интересно.
Жопа в том, что "имена" на этой файлухе - GUID'ы. Так что понять что за драйвер перед тобой можно только по строчкам внутри.
Ну и корбут очень простой, на нём эти дрова тупо не запустятся.
Кстати, нашёл в шкафу годный девайс для косплея: https://i.imgur.com/4aJ3nBJ.jpg
Можно через UART зацепить и течь.
Там вон джамперы слева, ими можно выбрать загрузку с "bios". А он понимает простые команды типа read, write и go. Можно и прошить и просто с оперативки пускануть.
К сожалению команды двоичные вроде как (я не пробовал еще, обычно через правый разъем для дебаггера заливал).
С текстовыми было бы круче, конечно.
Но асм там довольно простой, thumb 2 arm'овский.
STM32F103C8
Но эта более ламповая, имхо.
У этой кстати тоже MPU, можно юзермод от ядра отделить.
Ну да, я из одной из них себе сделал uart переходник. Винда и линукс норм распознают.
На 64 килобайта, ага.
> какой-то can
Бортовая сеть машин, к примеру.
В реале у меня одна из таких штук бибикает когда проветривать пора (по уровню СО2).
Для СО2 какая-то китайская хреновина MH Z18.
Там можно и музыку через dma играть, лол. Это тебе не pc.
Либо PWM, а DMA закидывает байтики в его threshold (не пробовал, но вроде так можно).
Как-то так. Проц в любом случае может спать или заниматься чем-то полезным.
В PC вроде ещё жёстко было, что байт передаёт только та железка, которая сделала запрос. Здесь такого ограничения нету.
Сами по себе железки тут тоже ходят в память, но это уже всякие видюхи, сеть да usb на более крутых чипах. Для остальной мелочи это тупо оверкилл.
я в мечтах уже восемь проектов написал, четыре языка новых выучил, и десять книг прочитал толстенных
Вот это модульность!
https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-query.php
> '' != $qv['embed']
какой хакер;)
Я когда-то давно уже выкладывал код основного файла рулетки.
> покажи свой
Идите в тиндер со своими брачными играми.
Ты случайно съел что-то не то и хочешь исправить эту ситуацию?
please click here if download hasn't started
https://pastebin.com/Z51aExET
Неудивительно. Любой код на этом языке будет говном.
У меня есть в БД non null поле.
Я по каким-то причинам делаю insert без этого поля и потом update записи с этим полем.
Если я делаю обе операции в рамках одной транзакции, то БД меня должна послать или это будет норм?
Т.е. тут либо надеяться, что 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?
+ т.к. у тебя EF (а у тебя скорее всего именно он), то он ебанется при попытке удаления "каскадом", поэтому тебе придется сначала руками установить null в ту связь, которая nullable, сохранить, а потом уже удалять сущность, которая за собой и вторую вытерет
(мне его достаточно по идее, если в 1-to-many on delete cascade)
так что это сахарок для операций админа базы в консоли (или для сикель скриптов миграции)
хз, вроде что-то делает
спасибо. если я правильно понял, когда я хочу гарантировать, например, что у поста в блоге всегда есть актуальная ревизия, я всё равно ключ помечаю как nullable и все гарантии проделываю в логике (то есть не проёбываю его записать)
Или почему вообще не считать актуальной самую последнюю по дате публикации?
Денормализация ведет к нарушению консистентности, ко!
На пост ссылкаются три ревизии
А он сам на четвертую
А она на него нет
и лол
Попробуй его написать на досуге.
А они есть в постгре и ms-sql
это лишний index scan + sort
если тебе писать один раз, а читать 100, то вывод очевиден - внесите денормализацию
именно так, но некоторые кейсы видны уже сразу
> А без Window functiuons он не пишется никак.
латерал джойн и лимит 1 (кстати рекомендую в постгресе именно это, будет быстрее)
это можно сделать для твоего варианта?
Ну нужно сделать видимо такой констреинт, вот руками его написать, и проверять отложенно (если субд позволяет)
так выедь нул тебе такой гарантии не даст
не?
есть 1-to-many для всех
и 1-to-1 для актуальной
> сделать видимо такой констреинт
- руками?
А в твоем варианте у тебя не будет гарантии тоже, зато будет денормализация и потенциальная неконсистентнгость
ну да
но 1-to-many не гарантирует, что с другой стороны непустое множество же?
- правильно. но с не-нул похоже не получается вообще :)
перед созданием поста нагенерить айдишник ревизии
сохранить его при инсерте поста как айдишник актуальной
потом инсертнуть саму ревизию с этим айдишником
обернуть всё в транзакцию, например
но тут всё же функция просто проверяет некоторое условие и бросает исключение
она не обновляет таблицы
я пока не понял из вашего диалога с д++, насколько адекватно так делать
не всю целостность возможно выразить в субд, смиритесь
1) insert A
2) insert B (a_id = inserted a.id)
3) update A set last_b_id = inserted b.id
при удалении
1) update A set last_b_id = null
2) delete A (cascade to all B)
- кстати, а зачем
у ревизии-то вообще один FK (айди поста) и он задаётся, когда мы добавляем её в общий список ревизий поста
я получается тогда неправильно написал про 1-to-1 в случае с актуальной ревизией? это какой-то другой вид отношения?
Одна актуальная ревизия (PK) <-> один пост (FK).
"1" к 1 и есть А.some_b_id к B.id
формально это многое к 1, но ты же не будешь записывать B.id в несколько разных А?
(можно повесить дополнительно unique лол, кстати, в нем даже можно найти свой смысл, вот тогда это будет 1 к 1 без кавычек)
удобно
Тогда всё проще - сделать репу на гитхабе и пулл-реквестами закидывать посты. Маркдауны он и так показывает. Код вообще писать не надо.
и можно не заставлять никого регаться, а просто принимать патчи на говнокоде
но курение ведёт к импотенции, а алкоголизм (привет, МАКАКА) к циррозу
вопрос лишь получаешь ли ты удовольствие и кто сдохнет раньше
выглядит недобро)
в постгресе даже есть partial индексы (чтобы задать кондишен такой, чтобы нуллы не хранить, нахуй они не нужны будут для этого задачи)
А зачем кстати это надо?
Если у A есть указатель на B, то я могу найти все A, которые указывают на нужную мне B по индексу обычно, у ключей же бывают индексы
делается unique (a_id, is_last), но требуется для всех непоследних делать is_last null, а то не получится магии
при этом, замечу, бд НЕ прогарантирует существование (a_id, is_last) = (<your>, true)
т.е. таблица всегда будет дырявая (живи теперь с этим)
она будет также дырявая, когда ты будешь делать update родительской таблицы, чтобы перезадать там last_b_id, но там, скорее всего, это будет не единственное поле, которое придется обновить, так что ну и ладно
триггеры нужны лишь в одном случае - чтобы бекенд не знал о магии (потому что не смог или потому что ему не нужно вообще совать туда нос)
а мы обсуждаем не магию, а нормальную, ИЗВЕСТНУЮ беку технологию, на которую этот пидор будет опираться в своих орм-селектах, и ещё как!
это не так и дешево
учитывая, что нормальный бекенд и так сделает эти проверки и не будет совать говно, ты просто на каждой модификации начинаешь тратить цпу (чтобы убедиться, что ну да, валидно)
сам же выше заявил, что удалять ничего не нужно - напиши тогда и триггер, который будет запрещать делит
этот ящик пандоры можно долго ковырять
кстати, не все ОРМы любят когда СУБД самомодифицируется - им надо помечать такие колонки как генератед-бай-субд (чтобы они не рассчитывали, что в бекенде самая правильная инфа, а зачитывали при каждом инсерте, апдейте через returning - да сука даже не каждая ОРМ умеет в returning! привет, хибернейт)
Добавление записи в базу не мешает в это время остальным читать из нее
Потому что "я одна, а вас много".
и понял, что не могу его сделать AFTER INSERT, потому что, когда я инсерчу "пост" в базу, то actualRevisionId у него ещё нет, а в триггере как раз проверяется, а не NULL ли у нас actualRevisionId
а AFTER UPDATE кмк ломает саму идею использования триггера в данном случае (потому что а хрен его знает, когда этот апдейт прилетит)
или?
вообще в целом калечная схема из "поста" и "ревизии", почему оно не в единой таблице?
при обновлении "странички" или удалении - старая версия уходит из posts в архив
у вас всегда актуальная версия в "активной" таблице, а историю посмотрите отдельным запросом
но не вижу ничего плохого хранить весь слепок
это тогда придётся при обновлении поста лезть в архив и всем ключ апдейтить на новый?
не лучше ли назначить какой-то айдишник "серии постов" и сделать его частью PK?
> да
нет, нахуя
опять дырки в таблицах постгреса придумали
достаточно хранить "айди сука поста"
который придумать ровно 1 раз при инсерте самой первой ревизии и никуда не менять всю дорогу
айди ревизии можно хранить вторично в активной таблице и заносить как ПК в олдовую
- 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 индекс, и партишионинг, и всякое такое
больше пользы, чем вреда
как минимум клиенту, который попросил записать его изменения, сообщить "твоя ревизия вот такая, спасибо пожалуйста", а потом он селектит такой, а ему "знаем знаем, она в архиве уже"
тебе не жалко места, надеюсь?
> Можно это решить наследованием таблиц в постгрес?
лучше не надо
* чтобы селектить только из актуальных постов (а это 99% чтений имхо), придется писать select from only posts, врядли EF так умеет, и все заебутся
* наследование, насколько я помню, хуево дружит с партиционированием
ну и вообще, наследование это про base-type - derived-type (один из вариантов реализации), сова на глобус это всегда чревато
Где денормализация-то? Нет такого айди current, это не уникальные сведения о ревизии
Ит депендс.
Но да, я сейчас как раз и запиливаю поебень, которая примерно по этой схеме вообще 2 базы линкует - активную и архивную. Да так, чтобы бекенд не думал об этом, лол. Изменения в активной отражаются в архивной в виде аудита ревизий. Для всего.
И там и там есть audit_info jsonb, в котором как раз куча всего лежит - номер ревизии, время создания, модификации, автор, сессия...
Инсерт в active = инсерт в архив.
Апдейт в active меняет ревизию = апдейт в архив даты окончания валидности старой ревизии + инсерт новой. Делит из активной = апдейт старой и инсерт финальной операции D.
PK на активной = индексы на архивной.
Архивная партишионируется (в тч хорошо сама хранит свой слепок активных).
Это все позволит строить норм отчёты и выгружать исторические данные, ссылающиеся на соответствующие тому же моменту времени версии родительских сущностей.
Основной геморрой в том, что это натурально два независимых инстанса, а не просто соседние таблицы.
но это реально решает мою проблему
это надо скрипт запускать, который базу перелопатит, или как-то миграциями?
сорян, я иногда часть предложений только думаю в голове, но не озвучиваю)
https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/managing?tabs=dotnet-core-cli#arbitrary-changes-via-raw-sql
но надо разбираться
а миграция приходит вместе с обновленным докер-образом базы
Типа дропнуть "пост" и просто иметь "ревизии", которые будут связаны неким ид?
если нет, то тогда покажи пример
> если в СУБД может быть неконсистеность, то рано или поздно она там будет
За примером далеко ходить не надо...
констрейнты бывают deferrable - т.е. их проверка происходит не per pow, а per statement или даже per transaction commit
это означает, что ты явно отключаешь какие-то констрейнты в начале транзакции (deferred), и заставляешь движок (субд) проверить констрейнты когда ты их явно включишь (immediate) или при коммите
так вот, в постгресе, например, not null это констрейнт, который нельзя сделать deferrable (а форин кей можно)
но, возможно, в твоей СУБД можно
а ещё в твоей ситуации логично сделать вывод, что ты бы хотел default значение своей not null колонке или триггер написать, ну или не инсертить в неё нулл
Да, собеседование по базам я не пройду :(
где ещё как не на ГК сеять знания об этом
Я тоже всё через запятую и условия в where ебашил. Пока вдруг не попалась таблица с null'ом. В этот момент я задумался: "а может как-то можно и цикл в коде не писать и строчки с нуллами не проёбывать?" И прочитал про джойны.
>Эйлера
вечно путаю его с венна
это надо было в институте запомнить
так, что я был морально готов на первой работе дописывать схему данных по биллингу на проде, а один из курсачей вообще был про олап
У нас был MS Access и препод, который говорил «Нахера мне ваши лабы в электронном виде, я не собираюсь портить глаза»
а то наготовили ма-те-ма-ти-ков на свою голову
хорошо что я ин-жы-нер
Да там тоже хъуево учат. Питон последний-то на XP так и не научили ставить
Хуй знает, что его ненавидят все
но лучше б наверное сикулайт показывали хотя бы
А по работе я базы почти не трогал. Так, мелкие скрипты, которые с готовой базой работали.
много вкусногово
https://github.com/WordPress/WordPress/blob/master/wp-includes/SimplePie/HTTP/Parser.php
В этой функции только JS и SQL не хватает.
чувак, покупай биткойны, к 2018 году подорожают очень!
не спрашивай зачем, просто надо
их на самом деле мало
У венгров вроде есть пласт лексики тюркский (от их совместной хотьбы сквозь великую степь), часть исконно фино-угорский их родной, и часть славянский как раз от южных братушек
В школе в качестве иностранного я изучал немецкий, и нам рассказывали только про Sonnabend. Вариант Samstag я узнал намного позже.
А вот теперь прочитал, что вариант Sonnabend употреблялся преимущественно в ГДР. Поскольку наши учебники писали те же люди, которые писали советские учебники, а те учебники были ориентированы на изучение ГДР (как члена Организации Варшавского Договора), то вполне ожидаемо, что в них был гэдээровский вариант.
Samstag произошло от еврейского «шаббат» (от которого произошла и наша «суббота»). А вот Sonnabend — это «солнечный вечер» — отсылка к Sonntag — «солнечный день» — немецкому названию воскресенья. Т. е. Sonnabend — это как бы вечер перед воскресеньем. Придумали его, чтобы заменить ветхозаветный термин, причём чуть ли не в восьмом веке, когда вовсю шло крещение Европы.
в разных частях германии на одном и том же хохсдойче по разному называется суббота?
ну что за язык!
Мало им того, что в каждой почти федеральной земле есть свой диалект
Нужно получить загранпаспорт, для этого требуется военный билет (при наличии), или справка с военкомата (важно, что они её запрашивают сами, и не нужно физически приходить в военкомат).
Ещё нужно указать места учебы и работы за последние 10 лет. Нахуй это надо? Может, лучше ничего не указывать? Типа вуз окончил, теперь безработный (математики никому не нужны).
Потому что есть такая хуйня, что военкомат имеет право отправить повестку через работодателя, а уклонение от подписанной повестки - уголовка. С другой стороны, они и так могут через налоговую получить инфу, если заинтересуются, но так то им это делать лень.
Да и сам запрос справки может их стриггерить на что угодно, может там уже забыли про меня.
Что думаете? Не хотелось бы в последний призыв залететь.
Места учебы и работы вроде чтобы проверить, что ты с секретной инфой не работал. Не то чтобы они сами не могли это сделать...
Раньше ходил по повесткам, последнюю проигнорил.
Тут тема подвернулась, хотелось бы съездить.
заразу всякую развозите только
• 1 сентября — 4 729 заражений по России;
• 21 сентября — 6 196 заражений по России.
Опять вверх пошло. Апчхи!
Да пусть развозит, главное - чтобы обратно не привозил.
Нет.
какие-то страшилки, в первый раз слышу это
а вот работодатель обязан в военкомат передавать сведения о своих работничках, но если не подает, то штраф 500 рублей
я за 4 года ни разу не подавал
штраф не 500р, а от 300р до 1000р, и да, вроде должны знакомить с повистками и направлять работников для постановки на учеты (а также вести журналы, сделать стенд с информацией о "кто в армии служил, тот в цирке не смеется" и т.д.)
почитай https://kontur.ru/articles/5158
затем уточни у своего работодателя, соблюдает ли он всё в полной мере
> в какой именно
по месту нахождения юр лица
Какой багор )))
Чобля? А как они это должны делать? Нанимать частных детективов, чтобы они следили за всеми работниками?
У тебя есть договор обо указании услуг, работодатель может его разорвать в одностороннем порядке и у тебя есть в среднем две недели чтобы пойти нахуй или написать в спортлото
фл - физлицо
в остальном верно, сколько дадут дорабатывать, зависит от конкретного работодателя
ИП же сам себе уже учёт ведет
Ну, по моему опыту, конторы вообще не горели желанием заключать договоры с физиками. Или делай ИП, если хочешь официально. Или по знакомству на словах с оплатой в конвертике.
Или сейчас что-то изменилось?
это допустимо
если вторая сторона - юрлицо-резидент, то она автоматически налоговый агент, которая признает уплату в адрес физлица доходом физлица и удерживает сама, можно потом НДФЛ-2 взять при желании (или увидеть на сайте налоговой спустя 1.5 года, как дойдут и обработаются отчеты, которые и так каждый месяц/квартал уходят)
ГПД делают, когда это самый удобный вариант, чтобы получить за оговоренный срок результат работ, который по плечам одному человеку, но который сам при этом не ИП и не собирается
привлечь консультанта, например
Невозможность засудить работодателя в основном происходит из-за формы договора
По договору ты оказываешь услуги по тз и скидываешь акты по которым тебе платят
Формально работодатель просто перестает тебе выдавать тз и ты не можешь требовать за него оплату
ты не знаешь, как расшифровывается ФОП?
найди мне там пожалуйста слово "юридический(-ое)"
кстати, ИП отвечает всем личным имуществом, а юрлицо - только имуществом юрлица (хотя и учредителей-директоров можно привлечь, если докажешь, что именно по их умыслу юрлицо не смогло)
низший уровень без регулярного дохода, вроде
Короче если ты не ИП и никуда не устроен, но при этом где-то добываешь бабло. Причём боишься, что под радаром налоговой с этим баблом проскочить не удастся.
Если я правильно понял, конечно.
хз насчет фрилансеров
впрочем, вот https://hh.ru/article/23928
если кому-то интересно
фрилансеры там, да
Конкретный срок в контракте обычно
и ник верни
ps: мне стыдно, что я спиздил твой ник
переводить на русский
слушать испанское проиношение
https://en.wiktionary.org/wiki/pajero
Вообще-то нестрашное слово, но в некоторых латиноамериканских сленгах у него пошлое значение.
Я вот идею одну имею чтобы реализовать и продать её Майкрософту.
Это сделает Github сильно удобнее.
Как думаете, сколько они заплатят?
https://github.com/github
Переведите на PHP.
Это статическая питушня которую нужно делать поверх динамической через try(:to_i), ведь может придти и не строка вовсе.
А еще тут писали что крестовики натыкаются на неудобства своего инструмента.
У крестобога в отличие от динамов таких проблем не бывает.
Такое поведение рано или поздно придется заложить в сложную систему, если не захочешь описать ручками все возможные варианты и по максимуму обобщить.
instead of
try calls can be chained:
instead of
То есть примеры как бы намекают, у объекта может не оказаться этого метода, то бишь он может быть другого типа, а может и того, который нужен, просто ты в это поле не присвоил метод, если в рельсах можно делать это так же, как и в питухоне и JS.
REM: Вообще от модифицирующих себя программ отказались еще в 60-х70х. Усложняло отладку донельзя.
У меня не стоят рельсы и я на них никогда не писал.
Сейчас вроде завезли возможность указать тип аргумента.
Что там у рельсов, JS, PHP я хз.
Ахаха, и тут отсечения. Мир ебанулся.
https://govnokod.ru/26966
https://govnokod.xyz/_26966/