Оригинал взят у [livejournal.com profile] avva в немного старины
(эта запись может быть интересна программистам)

1. Последняя версия GW-BASIC от Майкрософта - 1987 года - лежит на этом сайте. Там же можно скачать документацию языка и всех встроенных функций, хотя удобнее это читать здесь. Это был мой первый язык программирования, не считая калькуляторов - если точнее, я учился на варианте MSX-BASIC для Ямахи. GW-BASIC прекрасно запускается внутри DosBox. Все работает.

Напомню разницу между ним и гораздо более популярным поздним QBasic: в GW-BASICе обязательны номера строк и нет блоков кода или сабрутин: точнее, последние, конечно, реализуются с помощью команд GOSUB/RETURN, но их невозможно объявить командой SUB или вызывать по имени. QBasic это по сути дела язык структурированного программирования, просто похожий по синтаксику на Бейсик; GW-BASIC по духу есть классический Бейсик как его придумали в середине 60-х.

2. Недавно возник и ширится феномен "фантазийных консолей", среди которых самая заметная - Pico-8. Это как бы эмулятор несуществовавшей на самом деле никогда игровой консоли, с типичными для начала-середины 80-х ограничениями по памяти, резолюции "экрана" и цветам. У него нет, однако, своего вымышленного "процессора" с машинным кодом, вместо этого код пишется на Lua. Я сам еще не пробовал, но собираюсь посмотреть, выглядит симпатично.

3. Несколько лет назад мне попадался код ранней версии Паскаля 1973 г. - исходники компилятора, который в частности сам себя компилирует. Помню, что эти файлы были непричесаные - в них есть несколько мелких ошибок, и даже если поправить их, современный FreePascal их не понимает - несколько идиом в языке изменились. Сегодня мне попался отличный сайт, где во-первых эти файлы доведены до ума (The P2 Compiler), а во-вторых выложена версия еще более раннего варианта Паскаля, упрощенной версии 1972 г. - Pascal-S.

Обе эти версии компилируют Паскаль во внутренний байт-код, который потом интерпретируют. Вторая особенно миниатюрна, и код компилятора легко можно прочитать и понять. Автор страницы рассказывает на ней об очень забавной "ошибке", которую он обнаружил в компиляторе Pascal-S. Численная переменная в исходном коде во время интерпретации байт-кода хранится в виде variant record - паскалевского аналога union в C, т.е. в одном и том же месте хранится либо целое число, либо действительное, либо булевое значение итд. в зависимости от типа. Нужно проверить тип, чтобы знать, что именно хранится и как с ним обходиться. Так вот, когда компилятор видит одноместную операцию - (минус) в применении к целому или действительному типу, он генерирует байткодовую инструкцию 36, которая всегда применяет минус к целому значению переменной, не проверяя ее тип. Т.е. по идее, если определить переменную с плавающей точкой X, и написать -X, то во время интерпретации скомпилированного кода программа должна сгенерировать отрицание целого значения, которое она "прочитает" там, где записано на самом деле действительное, и выйдет бред.

Но при этом все работает!

Оказалось, что в компьютере CDC 6600, для которого это все писалось, было хитрое представление чисел с плавающей точкой. Машинное слово в нем занимало 60 бит, первые 48 была мантисса, потом 11 бит экспоненты, а последний бит - *знак* экспоненты. Кроме того, в этом компьютере отрицательные числа представлялись с помощью ones'-complement, а не two's-complement, как принято сегодня. Для изменения знака числа надо было полностью его инвертировать, и все. В результате число с плавающей точкой вело себя для некоторых операций подобно целому. Если сделать вид, что оно целое, и инвертировать, то мантисса отдельно инвертируется, экспонента отдельно тоже, но и *знак* экспоненты - отдельный бит, специально для этого добавленный - тоже, и поэтому значение экспоненты не изменится. Красиво!

В CDC-6600 было вообще немало интересных вещей. Например, работа с памятью там обычно была устроена так: были регистры X0-X7 и A0-A7. Помещение любого значения в один из регистров A1-A5 автоматически вело к считыванию из памяти по этому адресу в соответствующий регистр X1-X5 - не нужно было отдельной инструкции для работы с памятью. Помещение любого значения в регистры A6,A7 вело соответственно к записи в память по этому адресу содержимого X6 или X7. Это объясняет, почему руководство по ассемблеру CDC-6600 "посвящается A6 и A7, без которых ничего из полученного в данной книге нельзя было бы сохранить". Вся документация есть тут: http://ygdes.com/CDC/cdc6600.html

Это заставило меня задуматься о том, что неплохо бы "фантазийные консоли" подобно упомянутой выше Pico-8 писать также для вымышленных "странных" архитектур. Я никогда не работал с машиной на основе ones'-complement - было бы интересно попробовать. Скажем, с 14-битным машинным словом, что дает 16K ячеек памяти (но в каждой ячейке лежит 14 бит). Настоящим ассемблером, вдохновленным реальными старыми машинами, а не просто Lua. И так далее.
Оригинал взят у [livejournal.com profile] powerkite в Покупка Windows 10 в розницу
Имеется достаточно свежий ноутбук, который продавался с предустановленной операционной системой DOS. Сейчас прекрасно работает под Linux. Возникла необходимость установить на него лицензионно-чиcтую 64х битную версию Windows 10 (любой вариант, хотя бы "Home Edition").

Так как на самом ноутбуке изначально нет никаких наклеек с лицензиями для Windows, OEM-варианты не подходят - нет ключа для их активации и нужна розничная версия (или я не прав и можно как-то отдельно купить честный ключ и на OEM?). Все розничные варианты, которые гуглятся напрямую стоят от 7300руб - есть ли какие-то варианты купить Windows 10 дешевле не нарушая пользовательское соглашение при условии, что компьютер будет использоваться одним школьником (в основном) в образовательных целях в некоммерческих целях. Какие-то акции, купоны, групповые закупки?
Оригинал взят у [livejournal.com profile] hvostat_hvostat в "Как скачать файл из консоли Windows"
Утащил у [livejournal.com profile] ra1aie, за что ему большое спасибо.

Бывает так, что позарез нужно скачать какой-то файл с удаленного сервера, а на машине или server core, или слетевший ie, или другие причины, препятствующие скачиванию файлов традиционным способом.
И здесь нам поможет BITSAdmin - встроенная в Windows Server утилитка, способная выполнять функции wget.
Пример: bitsadmin /transfer myDownloadJob /download /priority normal http://www.site.domain/uzful_toolz.zip c:\uzful_toolz.zip

Коллега [livejournal.com profile] asm7 дополнил:
Также, можно воспользоваться командлетом PowerShell:
Invoke-WebRequest
__
Оригинал взят у [livejournal.com profile] hvostat_hvostat в "Записать событие в Windows Event Log из Powershell"
Нет ничего проще:

1) Создаём новый EventLog и указываем, откуда будем писать:
New-EventLog –LogName Application –Source “My Script”

2) Записываем событие, тип код события и текст в записи журнала:
Write-EventLog –LogName Application –Source “My Script” –EntryType Information –EventID 1 –Message “This is a test message.”

__
Оригинал взят у [livejournal.com profile] hoholusa в Десятка на халяву
Если вы по каким-то причинам не успели или не смогли бесплатно апгрейднуться до Windows 10, то вы можете это сделать это легально и всё ещё бесплатно тут:
https://www.microsoft.com/en-us/accessibility/windows10upgrade
Оригинал взят у [livejournal.com profile] mike_lambert в - А хотите по настоящему потрахаться? ... И ствол у танка отвалился
У моей дражайшей половины имеется многострадальный ноутбук Asus K50IN. Многострадальный, ибо пережил замену матрицы (сыночка по малолетству въебал ножкой от стульчика), клавиатуры (сыночка опять же выцарапывал), аккумулятора (ну дохнут они со временем). В общем, пришел черед замены жесткого диска на SSD.
С SSD нынче проблема. Не, так-то они есть, но преимущественно всякое говно, а SanDisk, который мне люб и дорог надо ждать несколько дней. Ну подождал бы ... Нет, приспичило взять AMD-шный. А чо, цвета те же!

Это была моя первая ошибка. Винда встала и через пять минут скрашилась в синьку. Через полдня стало понятно что SSD ойвсе. Хвала Ктулху - деньги вернули без проволочек, признав - пардон-с, продали вам мертвый SSD искаропки.
Ну ладно. Меня уже заранее заказанный SanDisk дожидался.

Забрал я его и попробовал накатить Ubuntu. Оная сломалась сразу, еще в процессе установки. Плюнул, записал на флэшку установщик винды. И трахался весь день, переустанавливая систему четыре раза. Почему?
А все просто.

Ноутбук старый. Платформа от nVidia - чипсет MCP75L (какой-то там nForce) и видюха GF102M. Естественный этап установки - накатить дрова на видюху, чипсет, SATA-контроллер ... И вот тут внезапно хуяк! 100% нагрузка на привод и ошибка в nvstor64.sys. Не все драйверы одинаково полезны. Оставил вместо него майкрософтовский - тьху-тьху, полет нормальный.

Такие дела. Будете втыкать SSD в старые ноуты на невидиевской платформе - игнорируйте дрова на SATA, сэкономите нервы и время. Мазлтов!

Оригинал взят у [livejournal.com profile] 1pragmatist в Интернет-магазин на Вордпресс
Интернет-магазин на Вордпресс.
Демо версия. На бесплатном хостинге.
Доступный вариант интернет-магазина. Сделал быстро.
Тестовый сайт. http://w96164ge.beget.tech/
Вполне подойдёт для небольшого регионального интернет-магазина и не потребует больших расходов.
Домен и хостинг на год можно получить за 1080 р. и дешевле.

.
Магазин товаров на 100 и больше без особых затрат.

openvpn

Dec. 15th, 2016 12:11 pm
Оригинал взят у [livejournal.com profile] cat_in_mind в openvpn
дано - локалка, доступ из которой в интернет возможен только через прокси. есть некое количество софта, который про прокси знать не хочет.
как решение - openvpn. маршруты для нужных сайтов хранятся на сервере в ccd и передаются на клиентские машины при коннекте.
всё работает, все хорошо - за исключение того, что пользователей уже более 300 и необходимые им адреса переиодически меняются. и при том, что большинство пользователей ходят на одни и те же сервера.
давно хотелось узнать, есть ли некий include для пользовательских конфигов. гугл молчал.
но при очередном поиске глаз зацепился за подерживаемые директивы в ccd каталоге.

The following options are legal in a client-specific context: --push, --push-reset, --iroute, --ifconfig-push, and --config.

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

config "/usr/local/etc/openvpn/ccd/<пути_к_сервера_конторы_А>
config "/usr/local/etc/openvpn/ccd/<пути_к_сервера_конторы_Б>
Оригинал взят у [livejournal.com profile] klink0v в Наступил на грабли в OpenWRT

Наступил на эталонные грабли в OpenWRT.

Оказывается, пакет "WonderShaper" (wshaper), мягко говоря, "портит малину". То есть шейпить-то он, наверное, шейпит. Только как-то уж чересчур усердно. Сегодня долго не мог понять, почему роутер зарезает bandwith до 1.5/0.2 Mbps, хотя никаких видимых причин для этого вроде бы и не было. Пресловутый wshaper был настроен исключительно для WiFi-интерфейса. Но после его удаления всё волшебным образом взвилось ракетой.

Короче говоря, wshaper — зло. Надо пользоваться более свежим и полезным "sqm-scripts". Вот годный мануал для быстрой настройки.

Profile

notes4myfamily

April 2017

S M T W T F S
      1
23 4 5 6 78
9 10 11 12 13 1415
16 17 18 19 20 2122
23 24 25 26 27 2829
30      

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 09:05 am
Powered by Dreamwidth Studios