Profile cover photo
Profile photo
Иван Левашев
52 followers
52 followers
About
Posts

Post has attachment
Unbounded strings direct access library for Ada
Breaking bad with Ada 2012 references
Borrowing pointers from Unbounded_String
Constructing fat pointers

Safer and more correct way to manipulate unbounded strings than Ada.Strings.Unbounded.Aux.

Read-only usage: To_String_View (Value_1) can replace To_String (Value_1), eliminates data copy while enforcing correctness (unbounded string is locked until Ada 2012 reference expires). In contrast to Ada.Strings.Unbounded.Aux, only provides read-only access to fixed string.

Read-write usage:

declare
Value_1_Editor : String_Editor (Value_1'Access);
Value_1_Edit : String renames Value_1_Editor.Edit;
begin
Value_1_Edit (2) := 'S';
end;

Borrows pointer on initialization and returns it on finalization. In contrast to Ada.Strings.Unbounded.Aux, makes sure the string is unique.

GNAT.SPITBOL makes heavy use of Ada.Strings.Unbounded.Aux, that seems to be fine for real-world library. I was missing some features, and I felt like I could do better.

AdaCore University list is comparably short wrt China, and manual checking of related university websites does not reveal that any of them really makes use of Ada. If there is anyone related here, can you advise on university choice so that my passion would be supported in the target university? I am Russian BSc, willing to be awarded scholarship for Chinese MSc with language year.

No much hope for Ada support in China, so asking late enough, but maybe there is a chance.

Post has attachment
Managed to make #JGNAT work with #CheerpJ today.

JGNAT: targets JVM which is not available in modern browsers.
Browser: requires explicit asynchronous style.
CheerpJ: implements Java on top of browser with synchronous style multithreading, but no structured multitasking.
CheerpJ+JGNAT: synchronous style, structured multitasking and availability in the browser. Excellent!

With #Swing support you don't mess with barely portable browser APIs, you use independent implementation with well-known APIs. Even fonts are drawn independently, so you can make image size measurements, draw images in an advanced way. Don't be limited by browser layout rules, combine vertical and horizontal layouts as you wish, and don't suffer from crossbrowser issues. Rich text editor in Swing is easier to handle than crossbrowser contenteditable stuff. There are plenty of additional Swing controls existing if you miss something.

This "Hello, World" project is mostly about eliminating the hassle so that everybody willing could start with JGNAT fast enough. JGNAT documentation was scarce. It was documenting projectless setup, while I managed to rely on GPR as much as possible. jvm2ada was only supporting version 50.0 which require Oracle login to download, so I created and corrected bindings to be usable out of box. jvm2ada was generating pragma Import for abstract methods, and JGNAT was refusing to compile it, so I corrected them to pragma Export where needed. Invoking adainit/adafinal using the method described in JGNAT UG didn't work for me, and also I faced permission violation issue, so I workarounded it.

CheerpJ startup times are notable, but there is a hope they will improve, as this is an early beta. Test here: http://static.toom.su/js/hello/Hello_CheerpJGNAT.Test_Page.html

CheerpJ home page: https://leaningtech.com/cheerpj/ .
CheerpJ mailing list: https://groups.google.com/forum/#!forum/cheerpj-developers

Post has shared content

Post has shared content
По следам электрона: Увидеть невидимое

Изучение свойств сверхтекучих жидкостей дало неожиданный побочный результат — видеозапись следов, которые оставляет в ней электрон.

Строго говоря, это не был опыт по отслеживанию движения электронов — таким путем ученые занимались изучением свойств сверхтекучего гелия. Да и видео больше смахивает на фото: скорость съемки 4 кадра в секунду фиксировала один и тот же пузырек на одном кадре, а на следующем показывала уже другой пузырек. По сути, эксперимент состоит в создании методики, позволяющей визуализировать движения вихрей в жидком гелии — а уж «сенсационная» съемка стала его побочным результатом.

На видеозаписи (файл в формате MPEG) можно наблюдать световые точки, движущиеся по экрану вниз — одни по прямолинейной траектории, другие по извилистой. Но это не «Матрица», это результат элегантного — простого и эффектного — эксперимента, разработанного группой профессора Хэмфри Мариса (Humphrey Maris).

Световые точки — результат рассеяния света на микропузырьках, которые формируются вокруг электрона, проходящего сквозь сверхтекучую жидкость гелия II. Эффект этот известен уже около столетия: при прохождении через определенные среды (например, перенасыщенный пар) энергии элементарных частиц оказывается достаточно для формирования видимых изменений. Следы отдельных элементарных физики научились наблюдать еще в начале ХХ в. Не нов и этот пример кавитации — однако ученые нашли способ увеличить пузырьки в размерах, используя звуковые волны. После этого осталось установить домашнюю видеокамеру в режим ночной съемки — и…
Свободный электрон, двигаясь в жидкости, образует вокруг себя крохотный микропузырек. В обычных обстоятельствах пузырьки эти моментально схлопываются за счет сил поверхностного натяжения. Однако в сверхтекучем гелии эти силы крайне малы, и пузырьки способны расти — пока не достигнут размеров около 40 ангстрем, при которых оба воздействия уравновешивают друг друга. (О сверхтекучих жидкостях читайте в нашем обзоре пяти аномальных субстанций: «Наука с приветом«.)

Однако тут вступает в дело генератор звуковых волн — проще говоря, громкоговоритель, создающий плоские, несфокусированные акустические колебания. Пронизывая весь экспериментальный объем жидкости, он меняет давление вокруг пузырька, уменьшает или увеличивает, в зависимости от фазы звуковой волны в конкретный момент и в конкретной области. При подходящих условиях микропузырек начинает расширяться вплоть до размера 8 мкм — вполне различимого глазом. Вспышки света, синхронизированные со звуковым генератором, не перегревают жидкость и подсвечивают пузырьки, окончательно делая их видимыми.

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

Об удивительном и таинственном мире элементарных частиц читайте: «Квантовая сутра».

http://www.popmech.ru/science/6608-po-sledam-elektrona-uvidet-nevidimoe/#full
Photo
Add a comment...

I'm wondering if anyone here has AdaMagic documentation. Like, what does offset_arith_type or ptr_align align mean in the config. And do you possess adabgen.inf and adacgen.inf because these tools are asking for it and I can't find missing files anywhere. Trying to use AdaMagic extracted from MapuSoft AppCOE with EmScripten, and 287 of 325 files from Ada runtime system compiled. But in Asm.js and WebAssembly there is no relaxed alignment like in x86, so it should be expressed in config somehow, and if I don't understand the meaning of configuration variables, that is harder to achieve.

Post has shared content

Post has attachment
Hi! I've been playing with leap seconds support in GNAT, external values in UNIX time and Windows FILETIME format, and found they don't play with each other well. Ada.Calendar.Conversions has conversion to/from UNIX time, but only the same leapness as the running program, and only 32-bit. So if you enable leap seconds support (gnatbind -y) and try to interpret value obtained from a external program not supporting them (usually), Ada.Calendar.Conversions.To_Ada_Time will return incorrect value. Also, as of GNAT 2016 GPL, unfortunatelly, Ada.Calendar.Arithmetic."+" isn't correct, but Ada.Calendar.Arithmetic.Difference is, so the latter can be used to workaround this issue. With this tiny library you can convert back and forth values in 64-bit UNIX time_t, Windows FILETIME, and thanks to workaround it works well in leap seconds enabled mode. When leap seconds are enabled you can process both leap-aware and leap-unaware time_t values.

Also, standard Ada.Calendar.Formatting.Image and Value don't support leap seconds and only support 2 digits after the dot. I have ported datetime parser from my Delphi-YAML project to address this issue. Now you can produce and consume timestamps in a nice-looking format (space-separated, like in Ada and MySQL) and ISO 8601. YAML datetime format is a superset of ISO 8601, so any syntax will do when consuming. GNAT Ada.Calendar.Time resolution is nanoseconds, and this resolution is fully exhibited by serializer and parser. Also, both ISO 8601 and YAML datetime support UTC time zone offsets attached to the timestamp, and serializer/parser can put them into and read out if needed.

Post has shared content
Inrimental lexical and syntax analysis in Ada following ideas of Tim Wagner now is part of Gela framework
Harmonia Research Project
Harmonia Research Project
harmonia.cs.berkeley.edu
Add a comment...

Куда всё делось?
Wait while more posts are being loaded