<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3649256544885837283</id><updated>2011-09-22T07:50:58.912+04:00</updated><category term='сложные задачи системного программирования'/><category term='современные формальные методы'/><category term='идеальный код'/><category term='технические советы'/><title type='text'>Russian researcher blog</title><subtitle type='html'>Заметки системного программиста</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-1407429116466002445</id><published>2010-12-25T23:50:00.000+03:00</published><updated>2010-12-25T23:50:37.868+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='современные формальные методы'/><title type='text'>Programs That Test Themselves (2009)</title><content type='html'>&lt;a href="http://se.ethz.ch/~meyer/publications/computer/test_themselves.pdf"&gt;http://se.ethz.ch/~meyer/publications/computer/test_themselves.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В статье описывается система AutoTest, позволяющая повысить эффективность использования программных контрактов. Система позволяет:&lt;br /&gt;1) автоматически генерировать test case'ы (в основном, случайным образом выбирая аргументы вызываемых методов)&lt;br /&gt;2) следить за работой программы и генерировать test case'ы, на которых произошли precondition failure или postcondition failure&lt;br /&gt;3) вручную задавать test case'ы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-1407429116466002445?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/1407429116466002445/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/programs-that-test-themselves-2009.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/1407429116466002445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/1407429116466002445'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/programs-that-test-themselves-2009.html' title='Programs That Test Themselves (2009)'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-925903369086488026</id><published>2010-12-12T13:08:00.000+03:00</published><updated>2010-12-12T13:08:55.639+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Задача построения идеального транслятора для VLIW-архитектуры</title><content type='html'>Для ускорения выполнения последовательная программа исполняется современными микропроцессорами почти всегда с использованием различных методов явного или неявного распараллеливания. Задача состоит в том, чтобы в явном виде подготовить исходную последовательную программу в таком виде, чтобы максимизировать ее распараллеливание на микропроцессоре. Естественно, задача имеет смысл только при задании класса архитектур и класса программ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-925903369086488026?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/925903369086488026/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/vliw.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/925903369086488026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/925903369086488026'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/vliw.html' title='Задача построения идеального транслятора для VLIW-архитектуры'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-1041643506882127629</id><published>2010-12-02T23:27:00.000+03:00</published><updated>2010-12-02T23:27:42.780+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Задача верификации спецификаций</title><content type='html'>Для верификации программ придумано множество различных методик. В том числе, например, "верификация на модели" (model checking), когда верифицируется не сам код программы, а его модель (обычно некая система переходов или автомат специального вида). На таких моделях успешно проверяется выполнение ряда свойств (например, отсутствие взаимоблокировок, дедлоков, в мультипроцессном коде).&lt;br /&gt;&lt;br /&gt;Но почему бы не посмотреть на верификацию спецификаций? Ведь для спецификаций тоже можно формулировать свойства и проверять их! Задача состоит в определении таких свойств и предложению методов верификации спецификаций на выполнение этих свойств.&lt;br /&gt;&lt;br /&gt;Сложность:&lt;br /&gt;  постановка задачи (непонятно, что это за свойства, о каких спецификациях идет речь)&lt;br /&gt;  вычислительная сложность (как и любая верификация)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-1041643506882127629?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/1041643506882127629/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_1969.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/1041643506882127629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/1041643506882127629'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_1969.html' title='Задача верификации спецификаций'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-8088431027594661537</id><published>2010-12-02T23:23:00.000+03:00</published><updated>2010-12-02T23:23:26.167+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Задача автоматического поиска обобщенного состояния</title><content type='html'>Речь идет о тестировании программ. Программы запускаются различными способами и проверяется, что во всех этих запусках программы ведут себя так, как положено. Вопрос только в том, что это за способы и как реализовать эти способы (задача проверки работы программы решена куда лучше).&lt;br /&gt;&lt;br /&gt;Рассмотрим программу (или компонент программы), поведение которой описывается конечным автоматом. Тогда под "способами" можно понимать запуски, в которых достигаются заданные состояния автомата, переходы в автомате или даже целые пути. Но проблема в том, что размеры автомата огромные. Поэтому состояния автомата группируют согласно некому отношению эквивалентности и полученный автомат называют "обобщенным автоматом". Задача состоит в автоматическом построении таких обобщенных автоматов. Обобщенный автомат не должен стать недетерминированным, если исходный был детерминированным, ну и количество состояний в обобщенном автомате должно-таки позволять проводить тестирование в приемлемые человеческие сроки.&lt;br /&gt;&lt;br /&gt;Сложность:&lt;br /&gt;  постановка задачи (четко надо понять, какие автоматы называются "обобщенными" и о каком отношении "обобщения" идет речь),&lt;br /&gt;  вычислительная сложность (перебор всех разбиений множества состояний автомата)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-8088431027594661537?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/8088431027594661537/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_5180.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8088431027594661537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8088431027594661537'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_5180.html' title='Задача автоматического поиска обобщенного состояния'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-6342152659347873284</id><published>2010-12-02T23:14:00.000+03:00</published><updated>2010-12-02T23:14:24.767+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Задача автоматического поиска дефекта в программе</title><content type='html'>Программы содержат ошибки, это факт. И от ошибок надо избавляться. Вот только весь вопрос в том, как и какими средствами. В данной задаче речь идет об автоматическом поиске входных данных данной программы (куда включается в том числе состояние среды, в которой работает программа), при запуске на которых программа "упадет". Можно рассматривать частный случай этой задачи: есть одна функция (с публичным доступом), требуется автоматически определить входные данные функции, на которых она "упадет".&lt;br /&gt;&lt;br /&gt;Сложность:&lt;br /&gt;  вычислительная сложность (перебор всех входных данных)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-6342152659347873284?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/6342152659347873284/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_4041.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/6342152659347873284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/6342152659347873284'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_4041.html' title='Задача автоматического поиска дефекта в программе'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-8198528929077776473</id><published>2010-12-02T23:08:00.000+03:00</published><updated>2010-12-02T23:08:51.193+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Задача автоматического распараллеливания последовательных программ</title><content type='html'>Есть такая светлая идея, что последовательный алгоритм может быть эффективно распараллелен. Конечно, речь идет о специальных параллельных архитектурах и о специальном классе последовательных алгоритмов. Задача состоит в том, чтобы выделить такие классы программ и архитектур и предложить методы автоматического распараллеливания.&lt;br /&gt;&lt;br /&gt;Сложность:&lt;br /&gt;  сложность постановки задачи,&lt;br /&gt;  вычислительная сложность&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-8198528929077776473?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/8198528929077776473/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_02.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8198528929077776473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8198528929077776473'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post_02.html' title='Задача автоматического распараллеливания последовательных программ'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-8580964512017817331</id><published>2010-12-02T22:29:00.001+03:00</published><updated>2010-12-02T22:29:32.504+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сложные задачи системного программирования'/><title type='text'>Проверка корректности самоизменяющихся программ</title><content type='html'>Задача состоит в том, чтобы по данной программе (возможно, лишь в бинарном виде) определить:&lt;br /&gt;1) портит ли она "полезные" данные (т.е. есть данные, которые она портить не должна)&lt;br /&gt;2) передает ли она несанкционированным образом третьей стороне какие-либо данные&lt;br /&gt;&lt;br /&gt;Примеры самоизменяющихся программ: вирусы&lt;br /&gt;&lt;br /&gt;Синонимы: "полиморфный" код (то же, что и самоизменяющийся)&lt;br /&gt;&lt;br /&gt;Сложность:&lt;br /&gt;сложность постановки задачи (неточно сформулировано то, что надо проверять),&lt;br /&gt;вычислительная сложность (проанализировать все пути выполнения)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-8580964512017817331?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/8580964512017817331/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8580964512017817331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/8580964512017817331'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/12/blog-post.html' title='Проверка корректности самоизменяющихся программ'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-667519008302484020</id><published>2010-06-27T13:32:00.005+04:00</published><updated>2010-12-02T23:38:38.264+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='технические советы'/><title type='text'>Howto integrate Google Code's bug tracker and Eclipse</title><content type='html'>&lt;a href="http://blog.vortex64.ru/?p=41"&gt;http://blog.vortex64.ru/?p=41&lt;/a&gt; (in Russian)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-667519008302484020?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/667519008302484020/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/06/howto-integrate-google-codes-bug.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/667519008302484020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/667519008302484020'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/06/howto-integrate-google-codes-bug.html' title='Howto integrate Google Code&apos;s bug tracker and Eclipse'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-799194062823281420</id><published>2010-06-23T21:26:00.007+04:00</published><updated>2010-12-02T23:39:10.010+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='технические советы'/><title type='text'>Eclipse 3.6</title><content type='html'>is released !&lt;br /&gt;&lt;br /&gt;and crash is occured in my Ubuntu Lucid !&lt;br /&gt;#&lt;br /&gt;# A fatal error has been detected by the Java Runtime Environment:&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; SIGSEGV (0xb) at pc=0xb7807f2d, pid=27481, tid=3077183168&lt;br /&gt;#&lt;br /&gt;# JRE version: 6.0_18-b18&lt;br /&gt;# Java VM: OpenJDK Client VM (14.0-b16 mixed mode, sharing linux-x86 )&lt;br /&gt;# Derivative: IcedTea6 1.8&lt;br /&gt;# Distribution: Ubuntu lucid (development branch), package 6b18-1.8-0ubuntu1&lt;br /&gt;# Problematic frame:&lt;br /&gt;# C&amp;nbsp; [libpthread.so.0+0x7f2d]&amp;nbsp; pthread_mutex_lock+0x1d&lt;br /&gt;#&lt;br /&gt;# An error report file with more information is saved as:&lt;br /&gt;# /tmp/hs_err_pid27481.log&lt;br /&gt;#&lt;br /&gt;# If you would like to submit a bug report, please include&lt;br /&gt;# instructions how to reproduce the bug and visit:&lt;br /&gt;#&amp;nbsp;&amp;nbsp; https://bugs.launchpad.net/ubuntu/+source/openjdk-6/&lt;br /&gt;# The crash happened outside the Java Virtual Machine in native code.&lt;br /&gt;# See problematic frame for where to report the bug.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;another crash:&lt;br /&gt;#&lt;br /&gt;# A fatal error has been detected by the Java Runtime Environment:&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; SIGSEGV (0xb) at pc=0xb76c3f2d, pid=28752, tid=3075856064&lt;br /&gt;#&lt;br /&gt;# JRE version: 6.0_20-b02&lt;br /&gt;# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing linux-x86 )&lt;br /&gt;# Problematic frame:&lt;br /&gt;# C&amp;nbsp; [libpthread.so.0+0x7f2d]&amp;nbsp; pthread_mutex_lock+0x1d&lt;br /&gt;#&lt;br /&gt;# An error report file with more information is saved as:&lt;br /&gt;# /home/kornevgen/hs_err_pid28752.log&lt;br /&gt;#&lt;br /&gt;# If you would like to submit a bug report, please visit:&lt;br /&gt;#&amp;nbsp;&amp;nbsp; http://java.sun.com/webapps/bugreport/crash.jsp&lt;br /&gt;# The crash happened outside the Java Virtual Machine in native code.&lt;br /&gt;# See problematic frame for where to report the bug.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;My Ubuntu had xulrunner-1.9.1 and xulrunner-1.9.2 simultaniously. Solution is removing xulrunner-1.9.1 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-799194062823281420?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/799194062823281420/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2010/06/eclipse-36.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/799194062823281420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/799194062823281420'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2010/06/eclipse-36.html' title='Eclipse 3.6'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-294481072762463001</id><published>2009-06-13T14:50:00.002+04:00</published><updated>2009-06-13T14:51:54.652+04:00</updated><title type='text'>New York Times о тестировании микропроцессора Intel</title><content type='html'>статья от 17 ноября 2008 года&lt;br /&gt;&lt;a href="http://www.nytimes.com/2008/11/17/technology/companies/17chip.html?_r=3&amp;amp;pagewanted=1&amp;amp;adxnnlx=1226923276-C0QeFwmZpPS2IDCHprvvYg"&gt;http://www.nytimes.com/2008/11/17/technology/companies/17chip.html?_r=3&amp;amp;pagewanted=1&amp;amp;adxnnlx=1226923276-C0QeFwmZpPS2IDCHprvvYg&lt;/a&gt;&lt;br /&gt;(via &lt;i&gt;Zvonimir Rakamaric)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-294481072762463001?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/294481072762463001/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2009/06/new-york-times-intel.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/294481072762463001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/294481072762463001'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2009/06/new-york-times-intel.html' title='New York Times о тестировании микропроцессора Intel'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-4370802811531059919</id><published>2009-06-11T09:59:00.002+04:00</published><updated>2009-06-11T10:03:19.605+04:00</updated><title type='text'>Философия прототипа</title><content type='html'>Недавно для себя уяснил очень важную мысль (вообще-то, ее мне должны были привить еще во время обучения, ну ладно, сейчас не об этом) : на начальной стадии необязательно и не нужно реализовывать систему целиком! Достаточно написать прототип, который будет работать на некотором наборе тестовых (показательных) примеров.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;А уже опосля, когда будет принято утвердительное решение о реализации, &lt;b&gt;выделены ресурсы (время, деньги, люди) и уточнены требования&lt;/b&gt;, тогда уже можно браться за серьезное программирование.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-4370802811531059919?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/4370802811531059919/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2009/06/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4370802811531059919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4370802811531059919'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2009/06/blog-post.html' title='Философия прототипа'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-4866046085708816420</id><published>2009-05-30T13:22:00.003+04:00</published><updated>2010-12-02T23:39:34.497+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='технические советы'/><title type='text'>Компиляция и сборка с MinGW</title><content type='html'>по-моему, неплохая статья &lt;a href="http://www.crossplatform.ru/node/58"&gt;http://www.crossplatform.ru/node/58&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-4866046085708816420?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/4866046085708816420/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2009/05/mingw.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4866046085708816420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4866046085708816420'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2009/05/mingw.html' title='Компиляция и сборка с MinGW'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-4597483157870114943</id><published>2009-05-27T14:11:00.002+04:00</published><updated>2010-12-02T23:34:11.446+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='идеальный код'/><title type='text'>И вновь про двойную диспетчеризацию на Java</title><content type='html'>Пусть надо реализовать функцию от двух переменных f(X, Y), где типы X и Y - суть корни деревьев наследования, причем так, чтобы при появлении нового типа X или Y компилятор нам сам подсказывал, что надо дописать. Обычная стандартная задача двойной диспетчеризации :) Не претендуя на всеобщий ее охват, напишу примененный мною метод реализации такого механизма. Добавлю только, что типы X и Y абстрактные.&lt;br /&gt;&lt;br /&gt;Итак, в типе&lt;br /&gt;&lt;br /&gt;Определяю новый тип (interface) YVisitor:&lt;br /&gt;public interface YVisitor&lt;br /&gt;{&lt;br /&gt;void visitY1( Y1 y );&lt;br /&gt;void visitY2( Y1 y );&lt;br /&gt;}&lt;br /&gt;помещаю туда методы про те потомки типа Y, которые вспоминаются.&lt;br /&gt;&lt;br /&gt;В тип Y помещаю абстрактный метод:&lt;br /&gt;public abstract void visit( X x );&lt;br /&gt;&lt;br /&gt;Тип X делаю implements YVisitor и добавляю метод&lt;br /&gt;&lt;br /&gt;public void f( Y y )&lt;br /&gt;{&lt;br /&gt;y.visit( this );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;В каждом потомке типа Y нужно теперь реализовать метод visit. Делаем это по такой схеме, для примера на классе Y1:&lt;br /&gt;class Y1 extends Y&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;public void visit(X x)&lt;br /&gt;{&lt;br /&gt;x.visitY1(this);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Очень важный момент, что суффикс имени вызываемого метода &lt;span style="font-weight: bold;"&gt;должен&lt;/span&gt; содержать имя класса (потомка Y)! Если такого метода нет в классе X (а это означает, что еще нет соотв.visit-метода в интерфейсе), то идем в интерфейс YVisitor и добавляем метод void visitY1(Y1 y1); Таким образом, при добавлении нового потомка типа Y такая схема работы позволит отследить весь необходимый новый код.&lt;br /&gt;&lt;br /&gt;Кроме того, компилятор будет требовать реализации методов visitYi в каждом потомке типа X. Если появится новый потомок типа X, компилятор сообщит, что в нем нужно реализовать все visitYi.&lt;br /&gt;&lt;br /&gt;Вызвать это дело следует так: x.f(y), где x типа X, y типа Y.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-4597483157870114943?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/4597483157870114943/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2009/05/java.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4597483157870114943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/4597483157870114943'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2009/05/java.html' title='И вновь про двойную диспетчеризацию на Java'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3649256544885837283.post-9054846690879941183</id><published>2009-05-26T10:56:00.002+04:00</published><updated>2010-12-02T23:40:19.797+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='технические советы'/><title type='text'>Как использовать Yices из Java под Windows</title><content type='html'>Yices - SMT-solver от &lt;span class="title1b"&gt;Computer Science Laboratory SRI International&lt;/span&gt; ( &lt;a href="http://yices.csl.sri.com/"&gt;http://yices.csl.sri.com/&lt;/a&gt; ). Иными словами, этот инструмент предназначен для решения задачи SAT, но с оптимизациями в некоторых теориях (например, битовые вектора, целые числа). Инструмент не является (пока) open-source. К дистрибутиву поставляется библиотека (dll и so) для вызова Yices из программ на Си. Мне же нужно было вызвать ее из Java, для чего пришлось воспользоваться механизмом JNI. Но для этого нужен архив объектных модулей (".a"), который отсутствовал в дистрибутиве. Коллеги из PACE University сделали уже готовую JNI-оболочку для вызова Yices из Java ( &lt;a href="http://atlantis.seidenberg.pace.edu/wiki/lep/Yices%20Java%20API%20Lite"&gt;http://atlantis.seidenberg.pace.edu/wiki/lep/Yices%20Java%20API%20Lite&lt;/a&gt; ), однако на их сайте были представлены только jar под Linux, а, поскольку, потенциальные пользователи моей программы работают под Windows, то надо было ее пересобрать для Windows. К счастью, PACE University предоставляет исходники JNI-оболочки бесплатно, чем я и воспользовался.&lt;br /&gt;&lt;br /&gt;Итак, качаем &lt;a href="http://atlantis.seidenberg.pace.edu/%7Elep/yices/codes/source.tar.gz"&gt;http://atlantis.seidenberg.pace.edu/~lep/yices/codes/source.tar.gz&lt;/a&gt; , распаковываем.&lt;br /&gt;я собирал под MinGW 5.1.4 (под cygwin не получилось).&lt;br /&gt;Если у вас не установлен JDK, сделайте это - его header'ы потребуются при компиляции оболочки. я для простоты поместил в директорию include из sources.tar.gz содержимое директории include (c win32) из JDK (в моем случае 1.6.0_13).&lt;br /&gt;&lt;br /&gt;подготавливаем libyices.a - коллеги его уже подготовили для нас и поместили в директорию lib архива sources.tar.gz. (иначе пришлось бы возиться с reimp и dlltool)&lt;br /&gt;&lt;br /&gt;компилируем оболочку (прилагаемый Makefile, как выяснилось, не подходит для компиляции под Windows):&lt;br /&gt;&lt;br /&gt;gcc -o libYicesLite.dll -shared YicesLite.c -Iinclude -Iinclude/win32 -Llib -lyices -Wl,--add-stdcall-alias&lt;br /&gt;&lt;br /&gt;(последний параметр очень важен - без него не получится вызвать функции оболочки из Java!)&lt;br /&gt;эта команда может выдать набор предупреждений, но никаких ошибок не должно быть (иначе не появится dll)&lt;br /&gt;&lt;br /&gt;теперь компилируем java-исходники:&lt;br /&gt;&lt;br /&gt;javac yices\YicesLite.java&lt;br /&gt;&lt;br /&gt;обратите внимание, что YicesLite.java именован именно так и в этом пакете. Менять имя пакета и имя класса НЕЛЬЗЯ - под эти имена сгенерирована оболочка на Си, под эти имена мы только же компилировали dll.&lt;br /&gt;&lt;br /&gt;Теперь можно написать тестовый пример и запустить его :) Только не забудьте сделать очень важную вещь: поместить скомпилированный libYicesLite.dll в директорию из переменной среды java.library.path и libyices.dll (ее можно скачать  с сайта Yices) в директорию из переменной среды PATH (чтобы она могла подгрузиться, как зависимость). И еще проверьте, как вызывается метод System.loadLibrary! Для данных имен правильным будет вызов&lt;br /&gt;&lt;br /&gt;System.loadLibrary("libYicesLite")&lt;br /&gt;(с префиксом lib!!!)&lt;br /&gt;&lt;br /&gt;Теперь, кажется, всё :)&lt;br /&gt;скачать libYicesLite.dll и соответствующий jar под Windows можно тут: &lt;a href="http://tesla-project.googlecode.com/files/libYicesLite.dll"&gt;http://tesla-project.googlecode.com/files/libYicesLite.dll&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tesla-project.googlecode.com/files/YicesLite.jar"&gt;http://tesla-project.googlecode.com/files/YicesLite.jar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3649256544885837283-9054846690879941183?l=kornevgen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kornevgen.blogspot.com/feeds/9054846690879941183/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kornevgen.blogspot.com/2009/05/yices-java-windows.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/9054846690879941183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3649256544885837283/posts/default/9054846690879941183'/><link rel='alternate' type='text/html' href='http://kornevgen.blogspot.com/2009/05/yices-java-windows.html' title='Как использовать Yices из Java под Windows'/><author><name>Eugene Kornykhin</name><uri>http://www.blogger.com/profile/12675949093886668116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_jbJ83QgQpn8/TCDzSEYOLZI/AAAAAAAACi8/17Wi-oEzC3k/S220/AIbEiAIAAABECP7gt6CY5OnxrQEiC3ZjYXJkX3Bob3RvKig2NDBiYjk2OGFkZmRiZTNjOTc1MDY3MWI5NGY4ODBlYTNhZjE3MmI1MAHtduPIwuu0YW8pQ7GM2TPVS3O3Lw.jpeg'/></author><thr:total>0</thr:total></entry></feed>
