Задать вопрос
Профиль пользователя заблокирован сроком с 21 апреля 2019 г. и навсегда по причине: п.5.16 правил Сервиса
Ответы пользователя по тегу Программирование
  • Как применить блокчейн?

    @Yupa20171123
    По аналогии с
    dmshar @dmshar


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

    2. Управление безпилотником или иным аппаратом (вместо кодов/ключей/полей верификации абонента) через сеть ретрансляторов.

    3. Компьютерная игра. И навыки вместо квеста. И напротив, как в "принце персии" на денди.

    4. Доработать dicom. Закон о защите персональной информации + доступ со всех ЛПУ. Подразумевалось что снимок и описание будут в одном файле. Но у нас есть много PACS и один МИС. То есть база SQL с описаниями и куча снимков на разных серверах.

    5. Файловая система. Чтоб вирус или "чужак" не мог изменить содержимое файлов. Вместо проверки сумм {MD5, SHA256, SHA512,...} Она может быть для баз знаний, еще чего то похожего.
    студент-"шас вспомню, на языке вертится..."
    препод-"выплюньте, это HCL"

    3+5 интереснее всего.
    Ответ написан
    Комментировать
  • Что нужно изучить чтобы найти олимпиаднику работу?

    @Yupa20171123
    * везде есть больницы. И больные уставшие сисьадмины. Они не пишут ПО а используют готовое. Вот и помоги людям, на халяву, ради опыта. Есть медтехники, им часто надо взломать ПО или разобраться что оно хочет. Ошибка E907 и звоните по этому телефону. (И готофте 400 т.р за выезд инженера). Если хочеш хакером ты стать... :)

    * Везде есть школы с замученными бумажной работой учителями (так говорят). Можно им ПО на планшетик чтоб в конце дня распечатать все и пойти спать.

    * Иногда попадаются буржуины которые чтото импортозамешаютЪ. Можно поучавствовать.

    * Много где есть такие места как турма, гаи, военная часть. Там тоже можно что то пописать. Например по для захвата всех гражданских безпилотников. Или удержание цели... Вот говорят у миля плохо с этим, после пуска цель теряется в дыму ракеты (нурса или птура). Это точно лудше чем писать ПО чтоб вычислять девочек из педвузов (тренирующихся обшаться с суецидниками на сайте Л.К.) и сдавать их *** (запрет на профессию). Можно совместно с китайцами свой иджис запилить :)

    * В некоторых местах бывают вузы. Там есть кафедры физики и химии где радостно загрузят задачками что бы такое посчитать. Или нефтянка с геологоразведкой. Еще можно сделать криптовалюту чтоб считала им где копнуть-качнуть. Потому что суперкомпы у них слабже твоего ноутбука.

    * Но лучше сделать какой то свой товар. Работа на дядю это грустно.

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

    @Yupa20171123
    Вот лудше в HEX.
    1. С какого адреса стартует?
    Некоторые стартуют из 0000. Некоторые берут адреса из fffX (для прерываний и адреса начала)
    2. Какая первая команда? Смотрим таблицу команд. Сколько у нее операндов? Пишем на бумаге. Какая потом?
    То есть тоже что делает дизасемблер. А потом оптимизируем до СИ. Потом пытаемся понять что она творит...
    Добавь HEX и таблицу команд. И можно будет сообша это разбирать :)
    Ответ написан
    Комментировать
  • Как понять логику не скриптовых языков программирования?

    @Yupa20171123
    На web страницах вешали таймеры. Их запускал браузер.

    1. денди-
    * основной поток. Ждет в безконечном цикле пока не изменится ячейка памяти.
    Что случилось? Логика игры и запись через порты IO (2004..2007) в видеопроцесор.
    Звук. ... Ждем дальше .
    * (немаскируемое) прерывание, пусть раз в 1/25 секунды. Из него опрашивают джойстик.
    пишется в ячейку памяти.

    2. windows-
    CreateWindow(...) // создаем окно. Оно вешает в безконечный цикл (или ждуший) свои области экрана и функции. 
       while ( GetMessage( MSG)!=WM_QUIT ){   MSG  -> WinProc(); } 
       DestroyWindow();


    Функция GetMessage помешается в массив в ОС, и если с ее окном что то происходит она возврашает управление (пробуждает поток). Потоки если ждут как правило усыпляются - экономия ЦПУ.

    WinProc(MSG){// это тело вызывается когда чтото присылается окну.  
          switch( MSG.code){ //что за сообшение 
          case КНОПКА_НАЖАТА: 
               ....
             switch ( key){//какая кнопка нажата? 
                case LEFT: g_siPosX++; g_nScreenChanged=1;  break;  //вправо, и перерисовать экран. 
             }  
              break;
          case таймер: if (g_nScreenChanged) SendMessage(..., WM_PAINT); break; //анимация не спит.  
          case WM_PAINT:  Рисую окно. break;  //рисовать все и сбросить флаг что надо перерисовать
       }


    3. Игра -
    Используются функции ожидания - WaitForSingleObject и Semaphiore&Events или условные переменные.

    * поток для ввода пользователя - ждать события DirectInput или ReadPort :).
    WaitForIOEvent(code);   <i> или любая друга ждушая функция.  Хоть прерывание. Часто с таймером чтоб не висеть. </i>
          switch(code){ 
              case МОНИТОР_ВКЛЮЧОН:  SendEvent(GRAPHICS_PAINT_ALL); ...
          }


    * поток логики игры -
    Событие что чтото изменилось или таймер.
    Двигает все- физика и анимация.
    Вводим корректировку на ввод пользователя, меняя скорости, направления,...
    Ставим по ходу дела флаги.
    Применяем флаги заставляя рисовать области или весь экран. Посылаем сообшения, семафорим или через условные переменные.

    * поток для окна - Ждет события для рисования, размеров окна, ... (опенгло не даст рисовать из другово потока чем создавало окно. DirectX использует указатели а не номера потоков тот дает. )
    lock_...(условная_переменная, мютекс). 
         while (ЧтоСлучилось==0){ 
             r=wait...( условная_переменная,мютекс). 
             if (r==TIME_OUT){ if (*pQuit) break; }
         }
        unlock(...);
        switch( ЧтоСлучилось ){
            case ОБНОВИТЬ СЦЕНУ:   //событие надо обновить сцену. 
              РИСУЕМ_В_БУФФЕР.  //может тоже быть отдельным потоком, чтоб окно быстро риагировало на события.  
                 // тогда запускаем рендеринг и ждем событие что готово. 
              PushPin(SCREEN_RESET,1); //прерывание - сброс экрана. 
              PushPin(SCREEN_RESET,0); 
              SendBufferToSPI(НАШ БУФФЕР); 
              break;   
        }


    Если вы пишете для Windows то это тоже как набор скриптов, событиям WM_MOUSEMOVE, WM_PAINT, WM_CLOSE, WM_CHAR, ... они будут вызываться системой. Можно сделать таймер. Если чего то ждете - запускаете свой дополнительный поток, посылая сообщения куда то еше.
    Если пишите для arduino - тогда да, надо цикл. Хотя и там можно ждать например таймер или прерывание ( как MS-DOS программы).

    Когда ваш PHP что то записывает в файл он копирует память, то есть ждет. Ждет пока другой поток запишет на диск. Ждет опять пока винт не скажет что все хорошо. Тогда берет следующую команду. Поэтому коректнее сказать что скриптовые и не скриптовые это уровень абстракции. Например g-basic преобразовывал
    10 PRINT 2+2
    в [000][010][130 например][2][+][2][END]
    а при исполнении выполнял как ваш PHP. Это компилирующий интерпретатор был.
    Ответ написан
    Комментировать