HelloWorld Explorer

Интересный веб-сервис создал Мэт Годбольт. Он

представил первую версию инструмента GCC Exlorer, предназначенного для наглядного просмотра результата компиляции участков исходного кода на языках C/C++ в инструкции на языке ассемблера. GCC Explorer позволяет быстро просмотреть результат компиляции произвольного участка кода, оценить качество его оптимизации, а также наглядно изучить техники оптимизации, применяемые GCC.

А я как раз о программировании сегодня лекцию читал и два раза на разных языках HelloWorld писал. Пришлось дома писать в третий раз:



Подробности.

Программирование на JavaFX под Linux в NetBeans

Как я уже сообщал, программирование на JavaFX под Linux стало реальностью. Поскольку речь идет о пользовательских интерфейсах со сложными визуальными эффектами, консольное написание программ не очень уместно. Лучше задействовать мощную IDE, например NetBeans. Но если под Windows JDK и JavaFX идут в едином дистрибутиве, устанавливаются вместе и дополнительных настроек при создании проекта не требуют, то под Linux нужно кое-что подшаманить вручную. А именно, в NetBeans открываем Сервис -> Платформы Java. В появившемся диалоге нажимаем «Добавить...» и выбираем каталог, где лежит одна из версий JDK. Когда визард отработает, появится еще одно окно с вкладкой JavaFX (конечно, если вы скачали полную версию NetBeans). На этой вкладке указываем путь, куда распакован JavaFX-дистрибутив.



После этого JavaFX-проекты будут собираться по единственному нажатию на кнопку «Запустиь проект» (если, конечно, в коде нет ошибок).

Node.js и упущенные возможности



О возможности писать серверные приложения на JavaScript я слышал давно и воспринимал сообщения об этом за проявления неких экзотических тенденций. Прочитав же на днях статью о программировании в среде Node.js понял, что зря не обрашал на них серьезного внимания. Действительно, плюсы видны невооруженным взглядом:

  • высокая скорость (задействован гуглевский движок v8 );
  • асинхронность (сервер не простаивает, ожидая окончания сравнительно медленных операций, таких, как запросы к БД);
  • компилировать не нужно;
  • все необходимые возможности — работа с файлами, сетевыми сокетами, http-запросами — в наличии;
  • внешние библиотеки подключать можно.

Есть и другие достоинства, но самое главное — клиент и сервер пишутся на одном и том же языке — JavaScript. Причем сервлеты создавать можно просто с полпинка:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');


Чтобы накодить такое на Java нужно раза в два-три больше букв (с учетом импорта), да еще компилировать и к серверу прикручивать. Здесь же написал код, запустил:

node HelloWorldServer.js


— и всё, можно открывать в браузере 127.0.0.1:1337/ и любоваться результатом. Консольный «Hello, World!» делается и того смешнее:

echo 'console.log("Hello, World!")' > Test.js
node Test.js


Короче говоря, рекомендую, это уже экзотика, а вполне себе профессиональный инструмент. Но это вовсе не означает, что нужно бросить привычные языки программирования и принять новшество как истину в последней интанции. Node.js на это и не претендует. Его целесообразно использовать для сбора информации на веб-интерфейсах и ее первичной обработки, после чего данные будут передаваться более серьезным серверам, написанным, например, на той же Java. Накладные расходы на запуск Node.js-сервлетов не велики (написан фреймворк на C++), так что перерасхода памяти на запуск нескольких серверов опасаться не стоит.

Семейная драма: .NET vs Java

Милый холиварчик

И снова траур в мире IT

Деннис Ритчи, об уходе из жизни которого стало известно сегодня, внес в развитие IT может быть даже больший вклад, чем Стив Джобс. В соавторстве с Брайаном Керниганом он разработал непревзойденный язык программирования C и ОС Unix, ставшую отправной точкой информационной революции. Именно книгу Кернигана и Ритчи «Язык программирования C» я как преподаватель предлагаю начинающим программистам в качестве лучшего введения в профессию.



Джеймс Гослинг пишет в своем блоге:

Новость об уходе Денниса Ритчи потрясла… Его влияние было огромным и очень сильно ощущалось, хотя он и не был, по большому счету, известен за пределами мира «технарей». Язык С — наше всё. Я обязан своей карьерой именно C и Unix.

Для большинства сегодняшних инженеров непонятна та эйфория, которую я ощущал в 70-е, когда появилась возможность писать не на Ассемблере, а на настоящем языке программирования. Мы получили всё необходимое чтобы писать программы, позволяющие контролировать каждый бит системы. До появления C, языки программирования не подходили для решения этой задачи: накладные расходы были слишком велики. Мудреность систем сдерживала написание крупных фрагментов программ. Язык C придал программированию реактивное ускорение.

Источник.

"Hello, World!" на ассемблере

Ничего нового не скажу, просто хотелось бы опубликовать простое упражнение, которое выполняли сегодня на курсах: набрать в текстовом редакторе исходник на ассемблере по образцу и откомпилировать. Всё это в среде Linux.

section	.text
    global _start	;декларируется для линкера (ld)

_start:			;точка входа

	mov	edx,len	;длина выводимого сообщения ("Hello, World!")
	mov	ecx,msg	;указатель на сообщение
	mov	ebx,1	;файловый дескриптор (stdout - это тоже какбэ файл)
	mov	eax,4	;номер системного вызова (sys_write)
	int	0x80	;обращаемся к ядру
	mov	eax,1	;номер системного вызова (sys_exit)
	int	0x80	;обращаемся к ядру

section	.data

msg	db	'Hello, world!',0xa	;выводимая на экран строка как массив байт
len	equ	$ - msg			;ее длина (вычисляется в момент компиляции)


Компилируем, линкуем, запускаем:

$ nasm -f elf hello.asm		# эта команда создаст файл hello.o - объектный файл в формате ELF
$ ld -s -o hello hello.o	# эта команда сформирует исполняемый файл
$ ./hello


Источник.

Who is Mr. Jenkins?

Без инструментов для коллективной работы трудно представить современное программирование индустриального уровня. К ним, прежде всего, относятся системы контроля версий (git, svn, Mercurial), системы отслеживания ошибок (Ttac, JIRA).

Несколько особняком стоит веб-приложение Jenkins, ранее известное как Hudson. Если в двух словах, то это специализированный шедулер, ориентированный на сборку программного обеспечения по расписанию. Он может быть полезен и системным администраторам, например, для резервного копирования или отслеживания состояния системы.





( Читать дальше )

YUI Compressor: сжимаем JavaScript файлы

Про обезжириватели JavaScript уже был топик. Вот, кстати, решение на Java.



developer.yahoo.com/yui/compressor/

Скачиваем архив здесь:

yuilibrary.com/downloads/#yuicompressor

В архиве в директории build будет уже собранный jar файл. Запускаем его так:

java -jar yuicompressor-x.y.z.jar --type js --charset utf-8 --nomunge --preserve-semi --disable-optimizations  исходный-скрипт.js -o сжатый-скрипт.js


Без ключа --nomunge код будет немножечко обфусцирован.

Визуализация технологических процессов в реальном времени. Ну или почти в реальном...

Продолжение.
Начало смотри:

mtaalamu.ru/blog/1728.html

Ни какой оператор глядя на экран не успеет предотвратить аварию в технологическом процессе.



( Читать дальше )
  • +4
  • 15 апреля 2011, 14:31
  • Markony
  • 2

RS-232 / RS-485 Converter-Transmitter.


В каждом протоколе — есть свои несовершенства. Исследуя одну из неприятных особенностей протокола связи контроллеров «I-7188» и модулей ВЫВОДА серии I-7000, я умудрился извлечь пользу из неприятности.


( Читать дальше )
  • +4
  • 27 марта 2011, 14:33
  • Markony
  • 1