Не знаю, про какие переключатели вы говорите
Оформление рисуем курсором или пальцем.
Например, переключатель цвета блока, переключатель надо ли выделять блок при наведении мыши, переключатель цвета выделенного блока. Про подсветку текущего раздела в зависимости от URL с учетом пагинации и выборку статей из БД пожалуй и думать не стоит. Но ладно, вы предлагаете, что это будет спрашивать нейросеть. Но чтобы она спросила, надо чтобы она знала, что это можно спросить. Значит, в нее надо заложить все возможные вопросы, касающиеся создания сайтов, и потом как-то определять, какие из них задавать.
В общем, когда вы разберетесь, почему ваша нейросеть не захватит мир (то есть будет работать только для определенного круга однотипных задач), напишите статью хоть, что именно не получилось и почему. Для всех остальных, так сказать.
Смыслом будет небольшой набор правил об ограничениях человека, например… и т.д.
Для вот этого «и т.д.» были созданы куча компьютерных наук, включая и нейросети. Что говорит о том, что набор правил все-таки большой. Чтобы выбирать из него те правила, которые надо уточнить именно сейчас, нужен также анализ смысла, либо полная формализация всех возможных действий и понятий.
Мне больше представляется другая картина.
— Почему не сделали то-то и то-то?
— Продукт стал большой, задач много, не успеваем.
— Ну постарайтесь за следующий месяц доделать.
Через месяц.
— Почему опять не сделали то-то и то-то?
— Не успели, пользователей много, задач много. Давайте наймем нам пару человек, которые будут заниматься мелкими задачами. А мы будем делать то-то и то-то.
— Хм, ладно, давайте.
Через некоторое время.
— Вот мы тогда наняли людей, и появилось время сделать то что надо. А теперь оно требует поддержки, а нам еще делать то и вон то. Надо бы еще кого-нибудь нанять.
— Как вы мне надоели. Ладно, наймем еще пару человек, и студентов на практику позовем. Только в следующий год больше никакого расширения штата не будет. И чтобы все готово было.
Представьте, что человек «объясняет» компьютеру особым образом что хочет
Это как бы и есть программа. Неважно, пишете ли вы ее на ассемблере или на формализованной версии русского языка. Чем меньше формализован язык, тем больше неоднозначностей в трактовках. Чем подробнее вы объясняете «особым образом» все неоднозначности, тем ближе у вас описание задачи к ТЗ (которое якобы «не понадобится создавать»), и затем к программе.
Пока компьютер не научится понимать смысл, вы будете закладывать в него этот смысл сами. А когда научится и будет сам задавать вопросы, это уже будет ИИ, но это будет аналог живого специалиста.
Да, не заметил, там же на 1 символ сдвигается. Ну я не совсем про словари, я имел в виду, что для более качественного решения нужен ИИ с другими принципами работы. Хотя согласен, статья не про это все-таки.
Проблема в том, что всем нужны разные блоки, различающиеся во многих параметрах. И если вынести все эти параметры из программного кода в интерфейс, то это будет просто графический аналог языка программирования. Сложность задачи и сложность реализации ее решения от этого не изменится.
Мне кажется, в целом все примерно так, только заговора никакого нет. Обычно просто берут разработчиков на рутинную работу, чтобы было кому пилить задачи. Без всякой цели доказать что-то бизнесу или кому-то еще.
Был в похожей ситуации, не жалею что ушел, жалею что долго оставался. Узнал «как писать нельзя», а заодно хорошо изучил сырой PHP и MySQL. Насчет плюсов согласен, для новичка неплохой вариант, но лучше на полгода-год максимум.
Если перемешать пары букв в чистом тексте, баллов будет столько же, но получится белиберда.
Например, кто сказал, что надо использовать пары символов, а не тройки?
Подозреваю, что для максимально правильного решения задачи надо использовать слова целиком. И причем не просто слова, а с определением смысла фраз. Применительно к антивирусам — машинные команды и цель их выполнения. Без этого всегда будет только «поиск баланса».
Не знаю, почему еще никто не написал. У вас во всех трех статьях какая-то вода и капитанство.
То, что вы делали всю жизнь — это и есть ваши желания.
Удовлетворяйте потребности тела, и появятся другие желания.
Не ставьте себе задачи, с которыми не справляетесь.
Да никто и не ставит. Все давно уже сделали свои простые задачи, потому и занимаются более сложными.
Не говоря уже о том, что контр-примеров к вашим тезисам тоже можно много придумать.
Писал программки для защищенного режима, в процессе работы отключалась видеокарта, выводил адрес инструкции с ошибкой спикером — два коротких бипа «1», один длинный «0».
Похоже, что нет. Принцип действия описан в пункте 5.1 pdf-файла. Как я понял, смысл в том, что можно передавать данные из виртуальной машины на хост без сети или общей памяти. То есть, надо иметь 2 своих процесса в ВМ и на хосте. Они выделяют себе какое-то количество памяти, некоторые страницы оказываются в одном банке памяти, но в разных строках. Как это определить, описано в первой половине документа. Процесс-получатель постоянно обращается к выбранному адресу и меряет время доступа. Если процесс-отправитель тоже будет обращаться к странице в этом же банке памяти, но в другой строке, то будет конфликт строк, и время доступа в процессе-получателе увеличится. Меняя время доступа, можно передавать биты.
Не кажется, я уже говорил почему. Оно встречается практически во всех областях программирования. Я запомнил это число не по каким-то непонятным причинам, а потому что занимаюсь программированием и часто его встречаю в разных источниках. Чаще, чем например 2^7 и 2^9.
В любом случае, это не единственный критерий, и к тому же можно просто посчитать в уме. Уж это-то хороший разработчик должен уметь)
Ок, перефразирую. Мне сложно представить хорошего разработчика, который не знает, что в байте 8 бит и 256 возможных значений. И что у него за все время от джуниора до хорошего разработчика не появилось ассоциации «байт — 2^8 — 256».
2^18 я тоже сходу не назову, но не знать 2^8 выглядит странно.
А вот, если он не будет помнить, что 9 * 9 = 81 и начнет это считать, то у меня не возникнет вопросов.
Ну, удачи вам с бухгалтером.
В какой момент какая конкретно степень двойки становится «обязательной» для знания хорошим программистом?
В тот момент, когда число бит в общепринятом байте меняется, степень двойки равна этому числу. Сейчас везде применяются 8-битные байты. Здесь вам правильно написали. Это же к вопросу «который еще и не используется никогда».
но во всем остальном является хорошим разработчиком?
Мне сложно представить хорошего разработчика, который не знает, что такое байт и сколько в нем возможных значений.
А вы, кстати, чем занимаетесь, можно ли где-то ваш код посмотреть? Может вы действительно хороший разработчик, и я не прав.
Программист, который будет думать, что 2^8 = 512 хуже?
А программист, который будет думать, что 2*2 = 5? Или что pi в военное время равно 4? Правильно, зачем нам математика, компьютер сам посчитает.
Фундаментальные знания — это не знание цифр, а понимание как все работает.
Вычисление 2^8 связано со свойствами двоичной системы. Двоичная система — это фундаментальные знания для программиста. Так же как знание десятичной для всех остальных специальностей, связанных с расчетами. Возьмете на работу бухгалтера, который не может посчитать, сколько будет 10^8?
я лишь усомнился в том, что необходимо помнить степени двойки
Мне кажется, в том и дело, что это не обязательные знания, которые требуются каждый день. Но если человек «в теме», это запоминается — из статей, книг, или примеров при изучении программирования. Поэтому и вывод — раз знает эту мелочь, значит имеются и более нужные знания.
Еще есть немного другой вопрос: «Почему ушли с предыдущего места работы?». А я с одного места работы ушел, потому что нагрузка была большая. Как-то так получалось, что реально не успевал. И на собеседованиях эта формулировка всегда вызывала недоверие.
— Почему ушли?
— Работы было много
— А вам значит надо, чтобы работы было мало?)
В двух словах и не объяснишь, почему считаешь что много и сколько это вообще. Но потом я придумал хороший ответ. Я говорю: «А вы считаете, что работы много не бывает?)». И обычно сразу всем всё становится понятно.
В atom name записывается код эксплойта. Функции в удаленном процессе вызываются через механизм APC. Нужно иметь права доступа THREAD_SET_CONTEXT на hThread.
Напрямую передать pfnAPC = GlobalGetAtomName нельзя, так как pfnAPC принимает 1 параметр, а GlobalGetAtomName 3. Но QueueUserApc использует NtQueueApcThread, которая вызывает свою callback-функцию, которая принимает 3 параметра. То есть, через NtQueueApcThread можно вызвать GlobalGetAtomName в другом процессе, которая запишет имя атома куда-нибудь в RW область этого процесса.
RW область можно найти например в конце секции данных kernelbase.dll.
Потом надо выделить память с правами RWX и скопировать туда код из области RW. Это можно сделать с помощью ROP Chain (return-oriented programming). Это когда заранее подготавливается стек с адресами возврата сразу на нужные функции, и ret из каждой функции делает переход сразу на начало другой. Последний ret переходит на начало эксплойта.
Стек также можно подготовить в RW области и вызвать NtSetContextThread для изменения ESP, тоже через APC. Она принимает 2 параметра, а не 3, и текущий стек должен сломаться, но это неважно, так как можно задать и нужный EIP.
Восстановление выполнения кода делается так же, как оно происходит при APC, с помощью вызова ZwContinue.
Хм. Не знаю, где вы усмотрели такую суть. Ни в коем случае не пытался относить свои суждения к объективным научным знаниям, или сделать математические формулы свойствами физических фотонов. Просто увидел в статье похожий принцип и предположил, как это может быть реализовано на низком уровне, без привлечения магии типа «оно само». Примерно как раньше люди возможное строение атома обсуждали. Хотел для интереса узнать примеры, подтверждающие или опровергающие эту гипотезу. Ну да ладно.
Я и предположил, как может быть реализован этот математический процесс на физическом уровне. Не «оно само случайно выбирается», а некоторый равномерный колебательный процесс, случайность в измерениях которого появляется благодаря наблюдению в произвольный момент времени.
Эту статью я читал, там только общие слова без подробностей. И противоречий с такими предположениями я не нашел.
Если развить мысль дальше, то возможно, потенциальная мощность квантовых вычислений как-то связана с этими высокочастотными процессами. То есть, их можно рассматривать как аналог перебора на высокой скорости всех возможных вариантов в обычных вычислениях. Если я где-то не прав, буду признателен за конкретные примеры.
Например, переключатель цвета блока, переключатель надо ли выделять блок при наведении мыши, переключатель цвета выделенного блока. Про подсветку текущего раздела в зависимости от URL с учетом пагинации и выборку статей из БД пожалуй и думать не стоит. Но ладно, вы предлагаете, что это будет спрашивать нейросеть. Но чтобы она спросила, надо чтобы она знала, что это можно спросить. Значит, в нее надо заложить все возможные вопросы, касающиеся создания сайтов, и потом как-то определять, какие из них задавать.
В общем, когда вы разберетесь, почему ваша нейросеть не захватит мир (то есть будет работать только для определенного круга однотипных задач), напишите статью хоть, что именно не получилось и почему. Для всех остальных, так сказать.
Для вот этого «и т.д.» были созданы куча компьютерных наук, включая и нейросети. Что говорит о том, что набор правил все-таки большой. Чтобы выбирать из него те правила, которые надо уточнить именно сейчас, нужен также анализ смысла, либо полная формализация всех возможных действий и понятий.
— Почему не сделали то-то и то-то?
— Продукт стал большой, задач много, не успеваем.
— Ну постарайтесь за следующий месяц доделать.
Через месяц.
— Почему опять не сделали то-то и то-то?
— Не успели, пользователей много, задач много. Давайте наймем нам пару человек, которые будут заниматься мелкими задачами. А мы будем делать то-то и то-то.
— Хм, ладно, давайте.
Через некоторое время.
— Вот мы тогда наняли людей, и появилось время сделать то что надо. А теперь оно требует поддержки, а нам еще делать то и вон то. Надо бы еще кого-нибудь нанять.
— Как вы мне надоели. Ладно, наймем еще пару человек, и студентов на практику позовем. Только в следующий год больше никакого расширения штата не будет. И чтобы все готово было.
Как думаете, сколько нужно переключателей, чтобы сделать интерфейс главной Хабра?) Не говоря уже про функциональность.
Это как бы и есть программа. Неважно, пишете ли вы ее на ассемблере или на формализованной версии русского языка. Чем меньше формализован язык, тем больше неоднозначностей в трактовках. Чем подробнее вы объясняете «особым образом» все неоднозначности, тем ближе у вас описание задачи к ТЗ (которое якобы «не понадобится создавать»), и затем к программе.
Пока компьютер не научится понимать смысл, вы будете закладывать в него этот смысл сами. А когда научится и будет сам задавать вопросы, это уже будет ИИ, но это будет аналог живого специалиста.
Был в похожей ситуации, не жалею что ушел, жалею что долго оставался. Узнал «как писать нельзя», а заодно хорошо изучил сырой PHP и MySQL. Насчет плюсов согласен, для новичка неплохой вариант, но лучше на полгода-год максимум.
Подозреваю, что для максимально правильного решения задачи надо использовать слова целиком. И причем не просто слова, а с определением смысла фраз. Применительно к антивирусам — машинные команды и цель их выполнения. Без этого всегда будет только «поиск баланса».
То, что вы делали всю жизнь — это и есть ваши желания.
Удовлетворяйте потребности тела, и появятся другие желания.
Не ставьте себе задачи, с которыми не справляетесь.
Да никто и не ставит. Все давно уже сделали свои простые задачи, потому и занимаются более сложными.
Не говоря уже о том, что контр-примеров к вашим тезисам тоже можно много придумать.
В любом случае, это не единственный критерий, и к тому же можно просто посчитать в уме. Уж это-то хороший разработчик должен уметь)
2^18 я тоже сходу не назову, но не знать 2^8 выглядит странно.
Ну, удачи вам с бухгалтером.
В тот момент, когда число бит в общепринятом байте меняется, степень двойки равна этому числу. Сейчас везде применяются 8-битные байты. Здесь вам правильно написали. Это же к вопросу «который еще и не используется никогда».
Мне сложно представить хорошего разработчика, который не знает, что такое байт и сколько в нем возможных значений.
А вы, кстати, чем занимаетесь, можно ли где-то ваш код посмотреть? Может вы действительно хороший разработчик, и я не прав.
А программист, который будет думать, что 2*2 = 5? Или что pi в военное время равно 4? Правильно, зачем нам математика, компьютер сам посчитает.
Вычисление 2^8 связано со свойствами двоичной системы. Двоичная система — это фундаментальные знания для программиста. Так же как знание десятичной для всех остальных специальностей, связанных с расчетами. Возьмете на работу бухгалтера, который не может посчитать, сколько будет 10^8?
Мне кажется, в том и дело, что это не обязательные знания, которые требуются каждый день. Но если человек «в теме», это запоминается — из статей, книг, или примеров при изучении программирования. Поэтому и вывод — раз знает эту мелочь, значит имеются и более нужные знания.
— Почему ушли?
— Работы было много
— А вам значит надо, чтобы работы было мало?)
В двух словах и не объяснишь, почему считаешь что много и сколько это вообще. Но потом я придумал хороший ответ. Я говорю: «А вы считаете, что работы много не бывает?)». И обычно сразу всем всё становится понятно.
Функции добавления и чтения атома:
Функция асинхронного вызова процедуры в user-mode (ее можно выполнить из другого процесса).
В atom name записывается код эксплойта. Функции в удаленном процессе вызываются через механизм APC. Нужно иметь права доступа THREAD_SET_CONTEXT на hThread.
Напрямую передать pfnAPC = GlobalGetAtomName нельзя, так как pfnAPC принимает 1 параметр, а GlobalGetAtomName 3. Но QueueUserApc использует NtQueueApcThread, которая вызывает свою callback-функцию, которая принимает 3 параметра. То есть, через NtQueueApcThread можно вызвать GlobalGetAtomName в другом процессе, которая запишет имя атома куда-нибудь в RW область этого процесса.
RW область можно найти например в конце секции данных kernelbase.dll.
Потом надо выделить память с правами RWX и скопировать туда код из области RW. Это можно сделать с помощью ROP Chain (return-oriented programming). Это когда заранее подготавливается стек с адресами возврата сразу на нужные функции, и ret из каждой функции делает переход сразу на начало другой. Последний ret переходит на начало эксплойта.
Стек также можно подготовить в RW области и вызвать NtSetContextThread для изменения ESP, тоже через APC. Она принимает 2 параметра, а не 3, и текущий стек должен сломаться, но это неважно, так как можно задать и нужный EIP.
Восстановление выполнения кода делается так же, как оно происходит при APC, с помощью вызова ZwContinue.
Эту статью я читал, там только общие слова без подробностей. И противоречий с такими предположениями я не нашел.
Если развить мысль дальше, то возможно, потенциальная мощность квантовых вычислений как-то связана с этими высокочастотными процессами. То есть, их можно рассматривать как аналог перебора на высокой скорости всех возможных вариантов в обычных вычислениях. Если я где-то не прав, буду признателен за конкретные примеры.