<?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-4752126961947866886</id><updated>2012-02-05T17:13:28.314+02:00</updated><category term='Zilog'/><category term='UTF8'/><category term='protocol'/><category term='Concept Client 3.0'/><category term='speex'/><category term='Concept Client'/><category term='Shared memory'/><category term='brizbriz'/><category term='GyroGears 2.0'/><category term='debygging'/><category term='Brad'/><category term='SQLite'/><category term='open source'/><category term='WebKit'/><category term='code completion'/><category term='gyrogears'/><category term='HTTP'/><category term='MongoDB'/><category term='tray ballon'/><category term='Flash'/><category term='accessibility'/><category term='Sheet'/><category term='filtre'/><category term='Xapian'/><category term='Debugging'/><category term='Marketing'/><category term='nosql'/><category term='swfdec'/><category term='iOS'/><category term='Apache'/><category term='relatii'/><category term='OCR'/><category term='GyropGears'/><category term='HC'/><category term='64 bit'/><category term='Logo'/><category term='facebook'/><category term='xml'/><category term='baze de date'/><category term='wrapper'/><category term='reports'/><category term='programare'/><category term='mysql'/><category term='PDF'/><category term='ceai'/><category term='webcam'/><category term='libxls'/><category term='memory'/><category term='Concept Application Server 2.1'/><category term='secure login'/><category term='video capture'/><category term='oracle'/><category term='CAS'/><category term='gmp'/><category term='AISEC'/><category term='touch screen'/><category term='PostgreSQL'/><category term='speech recognition'/><category term='eLiberatica'/><category term='view'/><category term='Wolfram'/><category term='concepts'/><category term='Concept Application Server 2.0'/><category term='High level apis'/><category term='jucarii'/><category term='face recognition'/><category term='mail library'/><category term='Firebird'/><category term='screenshot'/><category term='framework'/><category term='JavaScript'/><category term='CIDE'/><category term='Excel'/><category term='WKB'/><category term='Apache module'/><category term='wiki'/><category term='prezentare'/><category term='formulas'/><category term='cache'/><category term='MetaObjects'/><category term='WYSIWYG'/><category term='tehnologie'/><category term='secure'/><category term='GyroGeas'/><category term='thumbnails'/><category term='Portable'/><category term='benchmark'/><category term='GyroGears BETA'/><category term='rexpressions'/><category term='help'/><category term='drag and drop'/><category term='OS X'/><category term='GUI'/><category term='memcache'/><category term='chunked file'/><category term='source editor'/><category term='picture'/><category term='optimizari'/><category term='shaped windows'/><category term='plugin'/><category term='chat'/><category term='imagemagick'/><category term='LOAD'/><category term='Android'/><category term='Cluster'/><category term='IM'/><category term='database'/><category term='driver'/><category term='Mobile'/><category term='video sharing'/><category term='happy birthday'/><category term='tutorial'/><category term='GyroGers'/><category term='Gyro Grease'/><category term='horeca'/><category term='Concept 2.0'/><category term='CSV'/><category term='Concept WEB'/><category term='web script'/><category term='hello world'/><category term='captcha'/><category term='accel'/><category term='skin'/><category term='generare automata'/><category term='twitter'/><category term='Concept'/><category term='play'/><category term='BI'/><category term='7 years'/><category term='Concept Application Server'/><category term='Grid'/><category term='release candidate'/><category term='references'/><category term='Nuchilar bee'/><category term='clipboard'/><category term='MSMTP'/><category term='mbrola'/><category term='Concept Framework'/><category term='neomogene'/><category term='Markers'/><category term='cautare'/><title type='text'>Bohemian developer 1.0</title><subtitle type='html'>A software developer blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3232458025177645748</id><published>2012-02-05T17:04:00.004+02:00</published><updated>2012-02-05T17:13:28.323+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MongoDB'/><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>MongoDB is the first NoSQL supported database server</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-n2ADhKJW4Jo/Ty6bgq-z-3I/AAAAAAAAAdE/iMcT9RpDd4E/s1600/logo-mongodb.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 217px; height: 90px;" src="http://2.bp.blogspot.com/-n2ADhKJW4Jo/Ty6bgq-z-3I/AAAAAAAAAdE/iMcT9RpDd4E/s400/logo-mongodb.png" alt="" id="BLOGGER_PHOTO_ID_5705668763520858994" border="0" /&gt;&lt;/a&gt;It's been a while since I've started pondering about the benefits of NoSQL database engines. After implementing more than 100 GyroGears solutions, I've started to notice some patterns suitable for no-sql engines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've finished all the preliminary tests for the MongoDB Concept driver, the auto-documentation is available here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/MongoConnection.html"&gt;http://www.radgs.com/docs/help/MongoConnection.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/MongoDataSet.html"&gt;http://www.radgs.com/docs/help/MongoDataSet.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/MongoCursor.html"&gt;http://www.radgs.com/docs/help/MongoCursor.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And static functions here:&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/standard.db.mongo.html"&gt;http://www.radgs.com/docs/help/standard.db.mongo.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've modified GyroGears to use this driver, though is not yet fully functional. The relations, files and multimedia types are not working properly yet.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of a GyroGears application running on MongoDB.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-3v61reFwEHo/Ty6bsaFEqTI/AAAAAAAAAdQ/uJ6AXYHwoLc/s1600/mongo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://2.bp.blogspot.com/-3v61reFwEHo/Ty6bsaFEqTI/AAAAAAAAAdQ/uJ6AXYHwoLc/s400/mongo.png" alt="" id="BLOGGER_PHOTO_ID_5705668965142145330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see that you can use sql-style wildcard (for backwards compatibility). You can regenerate your old SQL-based Gyro application for MongoDB without the end-user ever noticing.&lt;br /&gt;&lt;br /&gt;Here is a shot of how the Mongo data looks like:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-xgbJJM_saN4/Ty6cPRfhsVI/AAAAAAAAAdc/Fqvlj1XGQrQ/s1600/mongo2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://3.bp.blogspot.com/-xgbJJM_saN4/Ty6cPRfhsVI/AAAAAAAAAdc/Fqvlj1XGQrQ/s400/mongo2.png" alt="" id="BLOGGER_PHOTO_ID_5705669564132602194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've used MongoVUE, no Concept Application Server tool yet available for managing Mongo data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3232458025177645748?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3232458025177645748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3232458025177645748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3232458025177645748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3232458025177645748'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2012/02/mongodb-is-first-nosql-supported.html' title='MongoDB is the first NoSQL supported database server'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-n2ADhKJW4Jo/Ty6bgq-z-3I/AAAAAAAAAdE/iMcT9RpDd4E/s72-c/logo-mongodb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4527495082858601612</id><published>2012-01-29T12:17:00.008+02:00</published><updated>2012-01-29T12:30:46.278+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='references'/><category scheme='http://www.blogger.com/atom/ns#' term='rexpressions'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='code completion'/><category scheme='http://www.blogger.com/atom/ns#' term='formulas'/><category scheme='http://www.blogger.com/atom/ns#' term='CIDE'/><category scheme='http://www.blogger.com/atom/ns#' term='source editor'/><title type='text'>GyroGears is getting cooler</title><content type='html'>Lots of new stuff available in GyroGears.&lt;br /&gt;Let's see:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-kis92_iJtgE/TyUdIp_69GI/AAAAAAAAAb8/Bvsz5nJ6LRM/s1600/gyro1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://4.bp.blogspot.com/-kis92_iJtgE/TyUdIp_69GI/AAAAAAAAAb8/Bvsz5nJ6LRM/s400/gyro1.png" alt="" id="BLOGGER_PHOTO_ID_5702996537684718690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;New formulas, a lot easier to use:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;QueryDB("select sum(`product`.`price`) from product inner join `rel_order_products` on `id_product`=`id` where `id_order`=$id")&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;*&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(255, 102, 102);"&gt;(100-Discount)/100 + Shipping_fees&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, it is a combined formula, using both a query and Concept computations (in red).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-zeUgZlLZ0ec/TyUdifbUtQI/AAAAAAAAAcI/6gUB4vq4Dfk/s1600/gyro2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://1.bp.blogspot.com/-zeUgZlLZ0ec/TyUdifbUtQI/AAAAAAAAAcI/6gUB4vq4Dfk/s400/gyro2.png" alt="" id="BLOGGER_PHOTO_ID_5702996981523461378" border="0" /&gt;&lt;/a&gt;New member validation expression (PERL-compatible expressions).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[A-Za-z0-9_\.\-]+\@[A-Za-z0-9_\.\-]+\.[A-Za-z0-9_\.\-]+&lt;/span&gt;&lt;br /&gt;it validates an email address.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-cmuTXWsvrc4/TyUd9knBTdI/AAAAAAAAAcU/xBMnDsGH2s4/s1600/gyro3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://3.bp.blogspot.com/-cmuTXWsvrc4/TyUd9knBTdI/AAAAAAAAAcU/xBMnDsGH2s4/s400/gyro3.png" alt="" id="BLOGGER_PHOTO_ID_5702997446771166674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;User defined functions can be now defined directly from GyroGears, without any need to open CIDE (see the button).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-BN4k9WhDl8E/TyUeQbchwJI/AAAAAAAAAcg/XmUdrKufLB0/s1600/gyro4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://2.bp.blogspot.com/-BN4k9WhDl8E/TyUeQbchwJI/AAAAAAAAAcg/XmUdrKufLB0/s400/gyro4.png" alt="" id="BLOGGER_PHOTO_ID_5702997770728751250" border="0" /&gt;&lt;/a&gt;A new source editor, with code completion, automatic indenting, search functions and zoom. This editor will replace the old editor in Concept IDE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-CFOloNMpS1Y/TyUeoVwX1NI/AAAAAAAAAcs/vw8snSl_2H4/s1600/gyro5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://4.bp.blogspot.com/-CFOloNMpS1Y/TyUeoVwX1NI/AAAAAAAAAcs/vw8snSl_2H4/s400/gyro5.png" alt="" id="BLOGGER_PHOTO_ID_5702998181518234834" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;A new data type: reference.&lt;/span&gt;&lt;br /&gt;A reference relation is a virtual relation to a member in a related entity. Then, that object will be mapped in the referring object. Look at the next screenshot to see exactly how it works.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-bNChrQ1sNTM/TyUe-uEZ2TI/AAAAAAAAAc4/V5x1Yonn0ms/s1600/gyro6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 305px;" src="http://3.bp.blogspot.com/-bNChrQ1sNTM/TyUe-uEZ2TI/AAAAAAAAAc4/V5x1Yonn0ms/s400/gyro6.png" alt="" id="BLOGGER_PHOTO_ID_5702998566001826098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For example, a blog post has comments and images. Each image has its own comments. So, you can add a reference to Image/Comments in the Post entity. This way, the end-user can see all the comments for all the images for a specific post.&lt;br /&gt;&lt;br /&gt;A lots of bug were fixes in various areas (especially in reporting and web sources).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4527495082858601612?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4527495082858601612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4527495082858601612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4527495082858601612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4527495082858601612'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2012/01/gyrogears-is-getting-cooler.html' title='GyroGears is getting cooler'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kis92_iJtgE/TyUdIp_69GI/AAAAAAAAAb8/Bvsz5nJ6LRM/s72-c/gyro1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1773470321834058746</id><published>2012-01-13T14:16:00.007+02:00</published><updated>2012-01-13T14:34:55.622+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='face recognition'/><title type='text'>GyroGears CSV, face recognition and new plug-ins</title><content type='html'>I've fixed a bug that caused some crashes in the concept server when running cached applications having the same name on different virtual hosts.&lt;br /&gt;Also, I had a little time to play, and I've added very simple functions for detecting a face (using OpenCV).&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Jz6mqL2d--g/TxAhEtc4bjI/AAAAAAAAAa0/1RtB_q_XhGM/s1600/fr.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 182px; height: 400px;" src="http://1.bp.blogspot.com/-Jz6mqL2d--g/TxAhEtc4bjI/AAAAAAAAAa0/1RtB_q_XhGM/s400/fr.png" alt="" id="BLOGGER_PHOTO_ID_5697089893427605042" border="0" /&gt;&lt;/a&gt;It works great, and it uses standard png or jpg pictures. It has a very simple interface, available here on &lt;a href="http://www.radgs.com/docs/help/standard.lib.face.html"&gt;http://www.radgs.com/docs/help/standard.lib.face.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, I've re-write the plug-in engine to support properties:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-wl0_5o6aHiQ/TxAiU0jYgkI/AAAAAAAAAbA/Ic8R4sUiYNc/s1600/properties.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/-wl0_5o6aHiQ/TxAiU0jYgkI/AAAAAAAAAbA/Ic8R4sUiYNc/s400/properties.png" alt="" id="BLOGGER_PHOTO_ID_5697091269723456066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've added new plug-ins:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-RAR5WcE8Qyg/TxAiVDZSafI/AAAAAAAAAbM/4JTgtWF_hxw/s1600/plugins2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 74px;" src="http://1.bp.blogspot.com/-RAR5WcE8Qyg/TxAiVDZSafI/AAAAAAAAAbM/4JTgtWF_hxw/s400/plugins2.png" alt="" id="BLOGGER_PHOTO_ID_5697091273707645426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;... and a email sender plug-in:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-vGkh2Zj0WSI/TxAiVkKKjuI/AAAAAAAAAbY/7Hl9-8YP0ag/s1600/plugins3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://3.bp.blogspot.com/-vGkh2Zj0WSI/TxAiVkKKjuI/AAAAAAAAAbY/7Hl9-8YP0ag/s400/plugins3.png" alt="" id="BLOGGER_PHOTO_ID_5697091282502586082" border="0" /&gt;&lt;/a&gt;A new property is available here "Hide title in forms", and when this is checked, the member title will be hidden.&lt;br /&gt;&lt;br /&gt;A new flag available for entities:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-LdHFT64KVuY/TxAjVE3FZpI/AAAAAAAAAbk/gBqfmi8QHss/s1600/parent.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://4.bp.blogspot.com/-LdHFT64KVuY/TxAjVE3FZpI/AAAAAAAAAbk/gBqfmi8QHss/s400/parent.png" alt="" id="BLOGGER_PHOTO_ID_5697092373612684946" border="0" /&gt;&lt;/a&gt;This will show in the master view the representative member in the parent entity. When parent level is 2, will show the parent's parent, and so on. This proved to be very useful for me.&lt;br /&gt;&lt;br /&gt;CSV import/export available for every entity (see the highlighted button and the one bellow):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-UQrGo2alQ8s/TxAkDnQ7KoI/AAAAAAAAAbw/XIbW_A-zfqw/s1600/csv.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 192px; height: 400px;" src="http://4.bp.blogspot.com/-UQrGo2alQ8s/TxAkDnQ7KoI/AAAAAAAAAbw/XIbW_A-zfqw/s400/csv.png" alt="" id="BLOGGER_PHOTO_ID_5697093173121854082" border="0" /&gt;&lt;/a&gt;It will automatically detect the separator (comma, semicolon or tab). Header is mandatory.&lt;br /&gt;&lt;br /&gt;Some optimizations on 64 bit platforms and some web bugs were fixed.&lt;br /&gt;&lt;br /&gt;These days I will implement face log-in for GyroGears applications, that will allow an user to log-in using a webcam. When the system recognizes the user, it could not ask for user and password. However, a picture of the user can be used ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1773470321834058746?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1773470321834058746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1773470321834058746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1773470321834058746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1773470321834058746'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2012/01/gyrogears-csv-face-recognition-and-new.html' title='GyroGears CSV, face recognition and new plug-ins'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Jz6mqL2d--g/TxAhEtc4bjI/AAAAAAAAAa0/1RtB_q_XhGM/s72-c/fr.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5040474764851594466</id><published>2011-12-27T22:49:00.008+02:00</published><updated>2011-12-27T23:35:01.527+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accel'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>GyroGears plugins</title><content type='html'>About a year ago I've started thinking about a plug-in system for GyroGears. GyroGears is closed source (at least for now), and I was pondering a system for combining both open source and closed source plug-in into GyroGears.&lt;br /&gt;&lt;br /&gt;Look at this:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--SAwvWHwqj4/Tvozm4OTxuI/AAAAAAAAAZQ/WSghZ3pyq50/s1600/g2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 389px; height: 400px;" src="http://3.bp.blogspot.com/--SAwvWHwqj4/Tvozm4OTxuI/AAAAAAAAAZQ/WSghZ3pyq50/s400/g2.png" alt="" id="BLOGGER_PHOTO_ID_5690917822156490466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, a Google map is displayed into this form, linked to the "Coordinates" and "Description" members.&lt;br /&gt;&lt;br /&gt;The fun is in implementing this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-AWo4pDx1Heo/Tvoz_yUOrOI/AAAAAAAAAZc/MppKa744Xow/s1600/g1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://2.bp.blogspot.com/-AWo4pDx1Heo/Tvoz_yUOrOI/AAAAAAAAAZc/MppKa744Xow/s400/g1.png" alt="" id="BLOGGER_PHOTO_ID_5690918250067438818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's a member defined as a "plug-in". I've created two plug-ins, one for Google Maps and another one for the WebKit engine.&lt;br /&gt;&lt;br /&gt;For Google Maps, you just enter your API key, and coordinates/title/description members and is done.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-CMP6QBmOi0c/Tvo02LN0O0I/AAAAAAAAAZo/kJuPCpqiST8/s1600/g3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 104px;" src="http://1.bp.blogspot.com/-CMP6QBmOi0c/Tvo02LN0O0I/AAAAAAAAAZo/kJuPCpqiST8/s400/g3.png" alt="" id="BLOGGER_PHOTO_ID_5690919184464362306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It should be very easy to write any plug-in for GyroGears, anything you could think at.&lt;br /&gt;&lt;br /&gt;Thanks to the new GyroGears developers (that quadrupled in the last few months), I've optimized some things.&lt;br /&gt;&lt;br /&gt;The first problem was the Concept Compiler (accel), that had an exponential growth in compile time when dealing with large applications. I've inserted some hashing tables in order to retrieve the data faster, and now it seems to work as expected.&lt;br /&gt;&lt;br /&gt;Another reported problem was with the web-generated scripts. In some cases were slow due to a bug in Gyro-generated framework that caused all the data to be transferred from the server. Now it has decent times.&lt;br /&gt;&lt;br /&gt;I've optimized the http:// interface, that looks a lot cooler now. However it still lacks in functionality when compared to the concept:// interface.&lt;br /&gt;&lt;br /&gt;The Sablotron XSLT library was dropped (is still supported by the Concept Framework),  and replaced by libxslt, that has a lot more features, and it seems to be a little faster and included in most Linux distributions (not necessarily needing manual compilation).&lt;br /&gt;&lt;br /&gt;A few new templates were added to GyroGears (webpage and web catalog).&lt;br /&gt;&lt;br /&gt;Below are some screenshots with the new http templates.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-8eiwEB3ujt4/Tvo47XCXx4I/AAAAAAAAAZ0/4c-D1BZOBvo/s1600/w1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 253px;" src="http://1.bp.blogspot.com/-8eiwEB3ujt4/Tvo47XCXx4I/AAAAAAAAAZ0/4c-D1BZOBvo/s400/w1.png" alt="" id="BLOGGER_PHOTO_ID_5690923671583442818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ooWoibINGI4/Tvo49DY1O4I/AAAAAAAAAao/-P6LVNJ6r-c/s1600/w5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/-ooWoibINGI4/Tvo49DY1O4I/AAAAAAAAAao/-P6LVNJ6r-c/s400/w5.png" alt="" id="BLOGGER_PHOTO_ID_5690923700668676994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ab7zTqoq_O4/Tvo47o2XtJI/AAAAAAAAAaA/VbMAEtuGG7k/s1600/w2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 253px;" src="http://2.bp.blogspot.com/-ab7zTqoq_O4/Tvo47o2XtJI/AAAAAAAAAaA/VbMAEtuGG7k/s400/w2.png" alt="" id="BLOGGER_PHOTO_ID_5690923676364944530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7oOisX6Xxbo/Tvo48SgFfhI/AAAAAAAAAaM/kjaGeO2Zsbc/s1600/w3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://3.bp.blogspot.com/-7oOisX6Xxbo/Tvo48SgFfhI/AAAAAAAAAaM/kjaGeO2Zsbc/s400/w3.png" alt="" id="BLOGGER_PHOTO_ID_5690923687545765394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-YdQEbK2vvB8/Tvo488JKjcI/AAAAAAAAAaY/JRcWX8hNZjM/s1600/w4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/-YdQEbK2vvB8/Tvo488JKjcI/AAAAAAAAAaY/JRcWX8hNZjM/s400/w4.png" alt="" id="BLOGGER_PHOTO_ID_5690923698723917250" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5040474764851594466?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5040474764851594466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5040474764851594466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5040474764851594466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5040474764851594466'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/12/gyrogears-plugins.html' title='GyroGears plugins'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--SAwvWHwqj4/Tvozm4OTxuI/AAAAAAAAAZQ/WSghZ3pyq50/s72-c/g2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2174733007459416106</id><published>2011-11-12T00:55:00.005+02:00</published><updated>2011-11-14T02:25:46.778+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Portable'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client 3.0'/><title type='text'>Ultraportability 3.0</title><content type='html'>It's been a while since I've started to analyze Android and iOS. I've thought of making a high level wrapper to maintain only one code tree for both platforms ... and I came over MoSync that does exactly this. And it does it in C/C++ !&lt;br /&gt;I've spent the last few nights rewriting the core communication objects in order to be compatible with ARM devices in single thread mode over asynchronous socket. And now, it works, and it works better than I've expected. So, I've decided that for Concept 3.0 I will have the same UI for every platform.&lt;br /&gt;&lt;br /&gt;Here are some pretty pictures:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-cllmhStuYXA/TsBf5hhJLEI/AAAAAAAAAY4/Q-FIk3qF-T0/s1600/msA.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 243px; height: 400px;" src="http://2.bp.blogspot.com/-cllmhStuYXA/TsBf5hhJLEI/AAAAAAAAAY4/Q-FIk3qF-T0/s400/msA.png" alt="" id="BLOGGER_PHOTO_ID_5674640972341390402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-KYGTtyIzRkU/TsBf5qxeloI/AAAAAAAAAYs/Z1KfhB1HLec/s1600/msB.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 242px; height: 400px;" src="http://3.bp.blogspot.com/-KYGTtyIzRkU/TsBf5qxeloI/AAAAAAAAAYs/Z1KfhB1HLec/s400/msB.png" alt="" id="BLOGGER_PHOTO_ID_5674640974825821826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-GVNHqvRpDVU/TsBf5xmj08I/AAAAAAAAAZE/OZhA-Rtktx8/s1600/ms9.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 242px; height: 400px;" src="http://1.bp.blogspot.com/-GVNHqvRpDVU/TsBf5xmj08I/AAAAAAAAAZE/OZhA-Rtktx8/s400/ms9.png" alt="" id="BLOGGER_PHOTO_ID_5674640976659076034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-uj7HNwzJ0G8/Tr2pG_sSvII/AAAAAAAAAXI/k9__dXyjBnA/s1600/ms1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 243px; height: 400px;" src="http://1.bp.blogspot.com/-uj7HNwzJ0G8/Tr2pG_sSvII/AAAAAAAAAXI/k9__dXyjBnA/s400/ms1.png" alt="" id="BLOGGER_PHOTO_ID_5673877043198213250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-iKwM71u86FI/Tr2pG_oK2sI/AAAAAAAAAXU/vx8wXfn24wM/s1600/ms2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 242px; height: 400px;" src="http://1.bp.blogspot.com/-iKwM71u86FI/Tr2pG_oK2sI/AAAAAAAAAXU/vx8wXfn24wM/s400/ms2.png" alt="" id="BLOGGER_PHOTO_ID_5673877043180919490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/--JH9RJ4Vtls/Tr2pHOmXXCI/AAAAAAAAAXg/kclNg9PU8PQ/s1600/ms3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 244px; height: 400px;" src="http://3.bp.blogspot.com/--JH9RJ4Vtls/Tr2pHOmXXCI/AAAAAAAAAXg/kclNg9PU8PQ/s400/ms3.png" alt="" id="BLOGGER_PHOTO_ID_5673877047199882274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-GMItyhIjQG4/Tr2pHpaFzAI/AAAAAAAAAXs/uXhRmXzXNMY/s1600/ms4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 400px;" src="http://3.bp.blogspot.com/-GMItyhIjQG4/Tr2pHpaFzAI/AAAAAAAAAXs/uXhRmXzXNMY/s400/ms4.png" alt="" id="BLOGGER_PHOTO_ID_5673877054396156930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A debug console ... for really bad days.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Dc6liO2SMek/Tr2pH3HfMGI/AAAAAAAAAX4/gyHwXE4gXE4/s1600/ms5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 242px; height: 400px;" src="http://2.bp.blogspot.com/-Dc6liO2SMek/Tr2pH3HfMGI/AAAAAAAAAX4/gyHwXE4gXE4/s400/ms5.png" alt="" id="BLOGGER_PHOTO_ID_5673877058076225634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-RWps3KTdoUM/Tr2poe8gcNI/AAAAAAAAAYI/qGda5_DH1Jo/s1600/ms6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 323px;" src="http://1.bp.blogspot.com/-RWps3KTdoUM/Tr2poe8gcNI/AAAAAAAAAYI/qGda5_DH1Jo/s400/ms6.png" alt="" id="BLOGGER_PHOTO_ID_5673877618523402450" border="0" /&gt;&lt;/a&gt;Here you can see the same application (using exactly the same code) running on desktop (the whole code is on background).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-oOH1JmO3hVk/Tr2povBoZrI/AAAAAAAAAYQ/Q0ffmWiBSJY/s1600/ms7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 242px; height: 400px;" src="http://2.bp.blogspot.com/-oOH1JmO3hVk/Tr2povBoZrI/AAAAAAAAAYQ/Q0ffmWiBSJY/s400/ms7.png" alt="" id="BLOGGER_PHOTO_ID_5673877622839862962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-UO5bXcgE1Gw/Tr2po4KyAKI/AAAAAAAAAYc/XpBe-Mf31LI/s1600/ms8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 243px; height: 400px;" src="http://1.bp.blogspot.com/-UO5bXcgE1Gw/Tr2po4KyAKI/AAAAAAAAAYc/XpBe-Mf31LI/s400/ms8.png" alt="" id="BLOGGER_PHOTO_ID_5673877625294160034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've ported even the dialogs.&lt;br /&gt;&lt;br /&gt;I hope that in early December to have a fully functional iOS and Android client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2174733007459416106?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2174733007459416106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2174733007459416106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2174733007459416106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2174733007459416106'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/11/ultraportability-30.html' title='Ultraportability 3.0'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-cllmhStuYXA/TsBf5hhJLEI/AAAAAAAAAY4/Q-FIk3qF-T0/s72-c/msA.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5601283015100473808</id><published>2011-10-19T08:15:00.008+03:00</published><updated>2011-10-19T08:32:15.387+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wolfram'/><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><title type='text'>Wolfram Alpha APIs for CAS, templates for GyroGears and markup columns for RTreeView</title><content type='html'>I've been working a lot these days, implementing, fixing and testing.&lt;br /&gt;Wolfram|Alpha APIs are now available in Concept Framework 2.2:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/WolframAlpha.html"&gt;http://www.radgs.com/docs/help/WolframAlpha.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It has a really simple interface, something like&lt;br /&gt;&lt;br /&gt;include WolframAlpha.con&lt;br /&gt;...&lt;br /&gt;var wa=new WolframAlpha(APPID);&lt;br /&gt;var result=wa.Query("pi');&lt;br /&gt;&lt;br /&gt;And this is all.&lt;br /&gt;&lt;br /&gt;Here is a test application and some responses:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-9NRIy7eTG84/Tp5d_sxNWcI/AAAAAAAAAUI/aVYU5RuUgF4/s1600/wa4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/-9NRIy7eTG84/Tp5d_sxNWcI/AAAAAAAAAUI/aVYU5RuUgF4/s400/wa4.png" alt="" id="BLOGGER_PHOTO_ID_5665068730209360322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ZAe5bLcZb4w/Tp5d_Lj6eJI/AAAAAAAAAT4/KteIXLeblTU/s1600/wa3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://3.bp.blogspot.com/-ZAe5bLcZb4w/Tp5d_Lj6eJI/AAAAAAAAAT4/KteIXLeblTU/s400/wa3.png" alt="" id="BLOGGER_PHOTO_ID_5665068721295227026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-tIQsz_OCGzM/Tp5d-3eftWI/AAAAAAAAATo/dopShpmWQh0/s1600/wa2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://3.bp.blogspot.com/-tIQsz_OCGzM/Tp5d-3eftWI/AAAAAAAAATo/dopShpmWQh0/s400/wa2.png" alt="" id="BLOGGER_PHOTO_ID_5665068715903792482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-PeZxCPfvlsg/Tp5d-2Bd1CI/AAAAAAAAATg/4hs3Ghs9taM/s1600/wa1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://1.bp.blogspot.com/-PeZxCPfvlsg/Tp5d-2Bd1CI/AAAAAAAAATg/4hs3Ghs9taM/s400/wa1.png" alt="" id="BLOGGER_PHOTO_ID_5665068715513599010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-6QDITqV5nto/Tp5eAL1NUoI/AAAAAAAAAUQ/CZ4rJNU6YMc/s1600/wa5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://2.bp.blogspot.com/-6QDITqV5nto/Tp5eAL1NUoI/AAAAAAAAAUQ/CZ4rJNU6YMc/s400/wa5.png" alt="" id="BLOGGER_PHOTO_ID_5665068738547634818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ZCC1eQbrT98/Tp5eT0k0kYI/AAAAAAAAAVE/UiUpn6VLEXY/s1600/wa9.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/-ZCC1eQbrT98/Tp5eT0k0kYI/AAAAAAAAAVE/UiUpn6VLEXY/s400/wa9.png" alt="" id="BLOGGER_PHOTO_ID_5665069075902271874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-lP8lnvpkXXI/Tp5eTn8YfeI/AAAAAAAAAUw/-RVnMcd8MJg/s1600/wa8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://3.bp.blogspot.com/-lP8lnvpkXXI/Tp5eTn8YfeI/AAAAAAAAAUw/-RVnMcd8MJg/s400/wa8.png" alt="" id="BLOGGER_PHOTO_ID_5665069072511434210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--zaMVeTYcBY/Tp5eTVwursI/AAAAAAAAAUo/SgeYSkf3jlI/s1600/wa7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/--zaMVeTYcBY/Tp5eTVwursI/AAAAAAAAAUo/SgeYSkf3jlI/s400/wa7.png" alt="" id="BLOGGER_PHOTO_ID_5665069067630718658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-qSJLXiVgvaM/Tp5eTNChrFI/AAAAAAAAAUc/KtB0eRSFRYU/s1600/wa6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://2.bp.blogspot.com/-qSJLXiVgvaM/Tp5eTNChrFI/AAAAAAAAAUc/KtB0eRSFRYU/s400/wa6.png" alt="" id="BLOGGER_PHOTO_ID_5665069065289444434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6nrm5OCpcFE/Tp5eUWy-cLI/AAAAAAAAAVM/miQQbjGM3NA/s1600/waA.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://4.bp.blogspot.com/-6nrm5OCpcFE/Tp5eUWy-cLI/AAAAAAAAAVM/miQQbjGM3NA/s400/waA.png" alt="" id="BLOGGER_PHOTO_ID_5665069085088444594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-G2bE86e51Hk/Tp5ehp3EihI/AAAAAAAAAVg/1DOgeOL0R0k/s1600/waC.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://3.bp.blogspot.com/-G2bE86e51Hk/Tp5ehp3EihI/AAAAAAAAAVg/1DOgeOL0R0k/s400/waC.png" alt="" id="BLOGGER_PHOTO_ID_5665069313544194578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-yFt4R0Ukh5k/Tp5ehVngTUI/AAAAAAAAAVY/IAodZY8x8B8/s1600/waB.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://2.bp.blogspot.com/-yFt4R0Ukh5k/Tp5ehVngTUI/AAAAAAAAAVY/IAodZY8x8B8/s400/waB.png" alt="" id="BLOGGER_PHOTO_ID_5665069308110196034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-rYUx_7Mv6ls/Tp5eh7BlZ8I/AAAAAAAAAV0/lts15FEYvtU/s1600/waD.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://1.bp.blogspot.com/-rYUx_7Mv6ls/Tp5eh7BlZ8I/AAAAAAAAAV0/lts15FEYvtU/s400/waD.png" alt="" id="BLOGGER_PHOTO_ID_5665069318151694274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can ask Wolfram|Alpha for virtually anything.&lt;br /&gt;&lt;br /&gt;In Concept Framework I've added a new column type for RTreeView: MARKUP_COLUMN. This allows you to use Pango markup language in column. You can see it in action in the Wolfram|Alpha screenshots.&lt;br /&gt;&lt;br /&gt;For GyroGears a new feature: Template Member. This will populate an object based on another template object. You can think of a project management application where you have "Project template" as an entity, which have tasks and so on. Then, when you have a "project" with a many to one relation to Project template, all the members will be automatically initialized with the values from the template.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-m9y9ES_kkGQ/Tp5fqUEyZbI/AAAAAAAAAV8/isIk1eNGZF8/s1600/template.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://4.bp.blogspot.com/-m9y9ES_kkGQ/Tp5fqUEyZbI/AAAAAAAAAV8/isIk1eNGZF8/s400/template.png" alt="" id="BLOGGER_PHOTO_ID_5665070561826596274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've optimized the memory usage in empty arrays (now an empty array uses only a few bytes).  This resulted in 5% less memory used by the Gyro-generated applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5601283015100473808?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5601283015100473808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5601283015100473808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5601283015100473808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5601283015100473808'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/10/wolfram-alpha-apis-for-cas-templates.html' title='Wolfram Alpha APIs for CAS, templates for GyroGears and markup columns for RTreeView'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-9NRIy7eTG84/Tp5d_sxNWcI/AAAAAAAAAUI/aVYU5RuUgF4/s72-c/wa4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3871093559554748795</id><published>2011-10-09T21:38:00.008+03:00</published><updated>2011-10-09T21:58:51.959+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='High level apis'/><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Gyro Grease'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache module'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server 2.1'/><title type='text'>Concept Application Server 2.2 brings faster CGI script execution</title><content type='html'>... about 4 time faster, take a look&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Zi4OhWUUBcs/TpHqrjq0bSI/AAAAAAAAATQ/IYKo5aIxT4A/s1600/cgi.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 371px;" src="http://2.bp.blogspot.com/-Zi4OhWUUBcs/TpHqrjq0bSI/AAAAAAAAATQ/IYKo5aIxT4A/s400/cgi.png" alt="" id="BLOGGER_PHOTO_ID_5661564240611536162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When running with APID (application ID), the interpreter asks Concept Application Server to give a pipe for communications. This is why is taking significantly more. But, you need APIDs on web only when debugging (in developer mode).... so when you disable AllowCASParent, you significantly speed up your http scripts. Green is CSP (concept server page) ran through mod_concept, blue is static HTML and red is CSP as CGI. As you can see, when disabling APIDs on http, CSP is faster than static HTML.&lt;br /&gt;&lt;br /&gt;But now, a new mod_concept module for concept. This module load a script and keeps it in memory and runs it multiple times (you can set CGIProcessSessions in BeeKeeper).&lt;br /&gt;&lt;br /&gt;As usual, new features are available on GyroGears. I've reorganized the directory structures, and now an include directory is available for each application.  But the really new stuff is GyroGrease - (grease for gyro's gears)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-m4WtbBUvO_s/TpHt5gHKZVI/AAAAAAAAATY/dqFI6jNqqMo/s1600/gyrogrease.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 293px; height: 400px;" src="http://4.bp.blogspot.com/-m4WtbBUvO_s/TpHt5gHKZVI/AAAAAAAAATY/dqFI6jNqqMo/s400/gyrogrease.png" alt="" id="BLOGGER_PHOTO_ID_5661567778709726546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This framework is automatically generated for your application model and is available by checking "Generate high level APIs" GyroGears (in Solution properties).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3871093559554748795?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3871093559554748795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3871093559554748795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3871093559554748795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3871093559554748795'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/10/concept-application-server-22-brings.html' title='Concept Application Server 2.2 brings faster CGI script execution'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Zi4OhWUUBcs/TpHqrjq0bSI/AAAAAAAAATQ/IYKo5aIxT4A/s72-c/cgi.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2944569570882065047</id><published>2011-09-26T11:57:00.007+03:00</published><updated>2011-09-26T20:06:34.253+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>New Concept Client and some new features in GyroGears</title><content type='html'>Added a few features in &lt;span style="font-weight: bold;"&gt;Concept Client&lt;/span&gt; (all platforms):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-K7DPKoL1hc8/ToA-nEd5YxI/AAAAAAAAAS4/U7gGhaC5INE/s1600/s3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 315px; height: 225px;" src="http://4.bp.blogspot.com/-K7DPKoL1hc8/ToA-nEd5YxI/AAAAAAAAAS4/U7gGhaC5INE/s400/s3.png" alt="" id="BLOGGER_PHOTO_ID_5656589972912300818" border="0" /&gt;&lt;/a&gt;1. Remember nothing, username, username and password&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Tmx4VsbhV0I/ToA-nJQ2leI/AAAAAAAAASw/kLSyLJ_9TfA/s1600/s2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 135px;" src="http://1.bp.blogspot.com/-Tmx4VsbhV0I/ToA-nJQ2leI/AAAAAAAAASw/kLSyLJ_9TfA/s400/s2.png" alt="" id="BLOGGER_PHOTO_ID_5656589974199768546" border="0" /&gt;&lt;/a&gt;2. Clear history option (by clicking the brush)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Q28jyfg3dZg/ToA-m7bDuMI/AAAAAAAAASo/bUf66Gh2Sw8/s1600/s1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 110px;" src="http://1.bp.blogspot.com/-Q28jyfg3dZg/ToA-m7bDuMI/AAAAAAAAASo/bUf66Gh2Sw8/s400/s1.png" alt="" id="BLOGGER_PHOTO_ID_5656589970484476098" border="0" /&gt;&lt;/a&gt;3. New inline suggestions&lt;br /&gt;&lt;br /&gt;In &lt;span style="font-weight: bold;"&gt;GyroGears&lt;/span&gt;:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-FOZiang5NgQ/ToA-nYUnAOI/AAAAAAAAATA/mG7XpOyRVbY/s1600/s4.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/-uxn0rDzS2tU/ToBtKLvW1KI/AAAAAAAAATI/hhs4caD_oqg/s1600/s4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 311px;" src="http://1.bp.blogspot.com/-uxn0rDzS2tU/ToBtKLvW1KI/AAAAAAAAATI/hhs4caD_oqg/s400/s4.png" alt="" id="BLOGGER_PHOTO_ID_5656641153694880930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The screen capture button (upper right)&lt;/li&gt;&lt;li&gt;New application home screen&lt;/li&gt;&lt;li&gt;The "Show text in toolbars" option in design&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A bug was fixed with the colors used for charts&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2944569570882065047?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2944569570882065047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2944569570882065047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2944569570882065047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2944569570882065047'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/09/new-concept-client-and-some-new.html' title='New Concept Client and some new features in GyroGears'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-K7DPKoL1hc8/ToA-nEd5YxI/AAAAAAAAAS4/U7gGhaC5INE/s72-c/s3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4172706163881242496</id><published>2011-09-18T21:25:00.009+03:00</published><updated>2011-09-24T13:49:09.859+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS X'/><category scheme='http://www.blogger.com/atom/ns#' term='GyroGeas'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>Concept and GyroGears ready for production usage</title><content type='html'>A lot had happened in the last weeks. Lots of tests, especially on 64 bit architectures and interaction between 64 bit client and 32 bit server. Some bugs were fixed in the RSA implementation (server and client). New &lt;a href="http://www.radgs.com/docs/help/standard.lib.xslt2.html"&gt;XSLT library&lt;/a&gt; was introduced in framework based on libxslt2, as an alternative to Sablotron. New &lt;a href="http://www.radgs.com/docs/help/standard.math.rand.html"&gt;random functions&lt;/a&gt; were introduced.&lt;br /&gt;&lt;br /&gt;Bugs fixed:&lt;br /&gt;On &lt;span style="font-weight: bold;"&gt;Win32&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Captcha library was patched in order to work correctly under Apache HTTPD under Win32.&lt;/li&gt;&lt;li&gt;Installer fixed (both server and client) - a problem with NSIS strings that emptied the PATH environment variable.&lt;/li&gt;&lt;/ul&gt;On &lt;span style="font-weight: bold;"&gt;Mac OS X&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Recompiled the dependencies for Concept Client - now all the plugins are working (on x86_64)&lt;/li&gt;&lt;li&gt;Patched some dynamic libraries in order to work with bundled libiconv instead of the one provided by Apple on OS X Lion. Apple provides version 7.0.0 of libiconv2, and Glib requires 8.0.0, and Concept Client needs both of them&lt;/li&gt;&lt;li&gt;Introduced platform specific code in order to work correctly (Concept Client)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixed various bugs for Snow Leopard and Lion (Concept Client)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;On all &lt;span style="font-weight: bold;"&gt;operating systems&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Optimized some functions&lt;/li&gt;&lt;li&gt;Cleaned up the source code. Fixed modified sources using two editors (one used tab characters for indenting, the other one used spaces).&lt;/li&gt;&lt;li&gt;Modified the code to compile and work correctly on 64-bit architecture&lt;/li&gt;&lt;li&gt;Fixed a bug that could cause a crush in Concept Server when sending a bad formed ciphertext.&lt;/li&gt;&lt;li&gt;Fixed a bug in MSG_GET_PROPERTY (Concept Client) and WaitMessage on the server that could cause some problems when waiting the same property from multiple similar objects. For new GyroGears 2.0 (release) applications, is mandatory to update both your server and client to latest version.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;As a new feature in Concept Client 2.0.118, a history database was introduced:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-9Xmirvj5HBU/TnY92Ht8r1I/AAAAAAAAASI/UgKU7P65TGY/s1600/history.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 127px;" src="http://1.bp.blogspot.com/-9Xmirvj5HBU/TnY92Ht8r1I/AAAAAAAAASI/UgKU7P65TGY/s400/history.png" alt="" id="BLOGGER_PHOTO_ID_5653774382204235602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Webkit/GTK is now available in OS X Client:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-pp8F2wK7p2o/TnY-timqsuI/AAAAAAAAASQ/j2oNYzHpefk/s1600/blog.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://1.bp.blogspot.com/-pp8F2wK7p2o/TnY-timqsuI/AAAAAAAAASQ/j2oNYzHpefk/s400/blog.png" alt="" id="BLOGGER_PHOTO_ID_5653775334314259170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Introduced "middle lock" in GyroGears applications:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-2cZ70U6GiSw/TnY_IWk4o9I/AAAAAAAAASY/IPKWj94YR2o/s1600/middlelock.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 189px;" src="http://2.bp.blogspot.com/-2cZ70U6GiSw/TnY_IWk4o9I/AAAAAAAAASY/IPKWj94YR2o/s400/middlelock.png" alt="" id="BLOGGER_PHOTO_ID_5653775794942026706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can enable "Edit without locking" in GyroGears allowing two or more users to edit simultaneously the same entity. Only the changed fields will be updated in the database.&lt;br /&gt;If refresh in real time is checked, when another user will view an object modified by another user, it will me notified that the object is changed.&lt;br /&gt;&lt;br /&gt;In the screen below you can see the two options.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-UMrUQSPJj4c/TnZAI9klq8I/AAAAAAAAASg/65cV-RCFEr8/s1600/gyrogears.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://1.bp.blogspot.com/-UMrUQSPJj4c/TnZAI9klq8I/AAAAAAAAASg/65cV-RCFEr8/s400/gyrogears.png" alt="" id="BLOGGER_PHOTO_ID_5653776904921394114" border="0" /&gt;&lt;/a&gt;Also, a popup menu is available in status window, enabling you to copy the text (useful when generating traditional web 2.0 applications, to copy the http address).&lt;br /&gt;&lt;br /&gt;GyroGears applications now fully remember the context after exiting and reopening the applications. It will automatically reopen all the tabs opened at closing time. Now it correctly the size and positions for all the windows (was broken at some time, due to new GTK version).&lt;br /&gt;&lt;br /&gt;The main feature added, was the property request caching in GyroGears forms. Now, the server makes a bulk request for all the needed properties when reading a form, and receives all the messages in a single block, minimizing the network traffic.&lt;br /&gt;&lt;br /&gt;When updating records, now will NOT cause the reload of the view, minimizing the database server traffic. The update will be done in-place on the screen. Same for delete operations and archiving operations. This lowered the database and provided the user with a better feel (all looks to be executed very fast, while update operations are run in background).&lt;br /&gt;&lt;br /&gt;Suggestions were introduced when searching in GyroGears applications (both http:// and concept://).&lt;br /&gt;&lt;br /&gt;GyroGears is OUT of BETA, and is to be considered stable (enough) for production usage.&lt;br /&gt;&lt;br /&gt;Remember that it can do websites and web applications now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4172706163881242496?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4172706163881242496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4172706163881242496' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4172706163881242496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4172706163881242496'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/09/concept-and-gyrogears-ready-for.html' title='Concept and GyroGears ready for production usage'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-9Xmirvj5HBU/TnY92Ht8r1I/AAAAAAAAASI/UgKU7P65TGY/s72-c/history.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5397418606312401685</id><published>2011-08-12T08:20:00.009+03:00</published><updated>2011-09-18T22:19:50.640+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>GyroGears new features</title><content type='html'>I didn't want to write code for http:// applications anymore, so now GyroGears generates fully functional http:///jQuery versions for any given model.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jbu95hpfH2M/TkS4wyOMOzI/AAAAAAAAARY/Gt9HYAVPPlw/s1600/haisitu4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://2.bp.blogspot.com/-jbu95hpfH2M/TkS4wyOMOzI/AAAAAAAAARY/Gt9HYAVPPlw/s400/haisitu4.png" alt="" id="BLOGGER_PHOTO_ID_5639835781629229874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It also generates the sign in and log in scripts.&lt;br /&gt;&lt;br /&gt;For the concept:// model lots of new cool stuff:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-1ZZ0V9tF_t4/TkS5LYR8JeI/AAAAAAAAARg/mLSB354YXzA/s1600/s2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://4.bp.blogspot.com/-1ZZ0V9tF_t4/TkS5LYR8JeI/AAAAAAAAARg/mLSB354YXzA/s400/s2.png" alt="" id="BLOGGER_PHOTO_ID_5639836238522099170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-t6tbJSU9IT4/TkS5Lhy0LtI/AAAAAAAAARo/LXH-OtpsG-Q/s1600/s3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 148px;" src="http://1.bp.blogspot.com/-t6tbJSU9IT4/TkS5Lhy0LtI/AAAAAAAAARo/LXH-OtpsG-Q/s400/s3.png" alt="" id="BLOGGER_PHOTO_ID_5639836241075908306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Windows 7 Aero integration. Just check "Use cool effects" in application settings.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-WQ9wmB7QCEc/TkS5pcVhCFI/AAAAAAAAARw/NavSIKUEFuw/s1600/hrc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://1.bp.blogspot.com/-WQ9wmB7QCEc/TkS5pcVhCFI/AAAAAAAAARw/NavSIKUEFuw/s400/hrc.png" alt="" id="BLOGGER_PHOTO_ID_5639836755006916690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;New SVG-based charts, in an effort to drop gdcharts (that are good but ugly).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-muf9hf8T7EE/TkS6zLK3ArI/AAAAAAAAAR4/qo81hWqufpk/s1600/suggest.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 45px;" src="http://2.bp.blogspot.com/-muf9hf8T7EE/TkS6zLK3ArI/AAAAAAAAAR4/qo81hWqufpk/s400/suggest.png" alt="" id="BLOGGER_PHOTO_ID_5639838021709136562" border="0" /&gt;&lt;/a&gt;Suggestions when searching.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-wxCHggJtKBs/TkS8OKmk1RI/AAAAAAAAASA/RC40p0HEtJs/s1600/templates.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://3.bp.blogspot.com/-wxCHggJtKBs/TkS8OKmk1RI/AAAAAAAAASA/RC40p0HEtJs/s400/templates.png" alt="" id="BLOGGER_PHOTO_ID_5639839584925046034" border="0" /&gt;&lt;/a&gt;The one that i like the most: new from template. You can create applications from standard templates (eg. CRM). I will create a few templates these days.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is important to update Concept Application Server to support all of these features.&lt;br /&gt;&lt;br /&gt;Happy coding for those of you who still write code!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5397418606312401685?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5397418606312401685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5397418606312401685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5397418606312401685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5397418606312401685'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/08/gyrogears-new-features.html' title='GyroGears new features'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jbu95hpfH2M/TkS4wyOMOzI/AAAAAAAAARY/Gt9HYAVPPlw/s72-c/haisitu4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7931177627991715364</id><published>2011-07-09T15:06:00.015+03:00</published><updated>2011-09-18T22:20:30.778+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GyroGears 2.0'/><title type='text'>GyroGears 2.0 is here!</title><content type='html'>GyroGears 2.0 is ready for production.&lt;br /&gt;&lt;br /&gt;Here are some screenshots showing the new features:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-iSZhCg92XbM/ThhEshslAcI/AAAAAAAAAQI/kciwi0ekeWI/s1600/gyrohomescreen.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://2.bp.blogspot.com/-iSZhCg92XbM/ThhEshslAcI/AAAAAAAAAQI/kciwi0ekeWI/s400/gyrohomescreen.png" alt="" id="BLOGGER_PHOTO_ID_5627323266149712322" border="0" /&gt;&lt;/a&gt;It remembers your recent projects ...&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-0IlIwHQLw18/ThhEzhrlKbI/AAAAAAAAAQQ/rFDKsJbNnnw/s1600/HRCEnterpriseMQ.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 356px;" src="http://2.bp.blogspot.com/-0IlIwHQLw18/ThhEzhrlKbI/AAAAAAAAAQQ/rFDKsJbNnnw/s400/HRCEnterpriseMQ.png" alt="" id="BLOGGER_PHOTO_ID_5627323386404612530" border="0" /&gt;&lt;/a&gt;It creates diagrams for your projects...&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-79qIZ5XXZwU/ThhFBbG_rMI/AAAAAAAAAQY/222Whe2DskU/s1600/hrc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://3.bp.blogspot.com/-79qIZ5XXZwU/ThhFBbG_rMI/AAAAAAAAAQY/222Whe2DskU/s400/hrc.png" alt="" id="BLOGGER_PHOTO_ID_5627323625158716610" border="0" /&gt;&lt;/a&gt;A cool home screen for your applications ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bO-dizbcN2g/ThhFy82rqiI/AAAAAAAAAQg/0pAkSAEhoI4/s1600/sendto.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 386px; height: 400px;" src="http://1.bp.blogspot.com/-bO-dizbcN2g/ThhFy82rqiI/AAAAAAAAAQg/0pAkSAEhoI4/s400/sendto.png" alt="" id="BLOGGER_PHOTO_ID_5627324476030691874" border="0" /&gt;&lt;/a&gt;"Send to" option for non exclusive relations...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-iaCbyL0GoCI/ThhGDyDnsAI/AAAAAAAAAQo/_4OyL_koE8Y/s1600/newfor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://1.bp.blogspot.com/-iaCbyL0GoCI/ThhGDyDnsAI/AAAAAAAAAQo/_4OyL_koE8Y/s400/newfor.png" alt="" id="BLOGGER_PHOTO_ID_5627324765189943298" border="0" /&gt;&lt;/a&gt;"New for ..." option for exclusive relations ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-EcGB93Atazk/ThhGoIAxrVI/AAAAAAAAAQw/QsAEiEt8cQU/s1600/launcher.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="http://4.bp.blogspot.com/-EcGB93Atazk/ThhGoIAxrVI/AAAAAAAAAQw/QsAEiEt8cQU/s400/launcher.png" alt="" id="BLOGGER_PHOTO_ID_5627325389558885714" border="0" /&gt;&lt;/a&gt;Launcher for multiple application projects (applications working with the same data)...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Oq6NK8_D-5o/ThhHMzcO9qI/AAAAAAAAAQ4/FsdBZ0Pc_io/s1600/related.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 307px;" src="http://4.bp.blogspot.com/-Oq6NK8_D-5o/ThhHMzcO9qI/AAAAAAAAAQ4/FsdBZ0Pc_io/s400/related.png" alt="" id="BLOGGER_PHOTO_ID_5627326019692066466" border="0" /&gt;&lt;/a&gt;Show related entities for an object ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-IhhIw5jFiGg/ThhIMgS7B6I/AAAAAAAAARA/yI3-kVkdwcY/s1600/revisions.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://4.bp.blogspot.com/-IhhIw5jFiGg/ThhIMgS7B6I/AAAAAAAAARA/yI3-kVkdwcY/s400/revisions.png" alt="" id="BLOGGER_PHOTO_ID_5627327114064365474" border="0" /&gt;&lt;/a&gt;Revisions (versioning) for entities ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-FygVsORPIQg/ThhImcjbWMI/AAAAAAAAARI/2mbX_cSHz8Q/s1600/smallrel.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 352px; height: 349px;" src="http://3.bp.blogspot.com/-FygVsORPIQg/ThhImcjbWMI/AAAAAAAAARI/2mbX_cSHz8Q/s400/smallrel.png" alt="" id="BLOGGER_PHOTO_ID_5627327559736449218" border="0" /&gt;&lt;/a&gt;Option for rendering relations and long strings in small widgets. Also, many-to-one relations can be rendered in combo boxes...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-XlbTmPWjiiQ/ThhJJjS0E_I/AAAAAAAAARQ/Tf4B3QJpnL0/s1600/home.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://1.bp.blogspot.com/-XlbTmPWjiiQ/ThhJJjS0E_I/AAAAAAAAARQ/Tf4B3QJpnL0/s400/home.png" alt="" id="BLOGGER_PHOTO_ID_5627328162841236466" border="0" /&gt;&lt;/a&gt;Various GyroGears options for lazy programmers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open/Save available on the client&lt;/li&gt;&lt;li&gt;GyroGears remembers it window settings now&lt;/li&gt;&lt;li&gt;It can embed your project custom files into the gyro project (everything is stored in just one file)&lt;/li&gt;&lt;li&gt;It can generate a Concept Installer&lt;/li&gt;&lt;li&gt;It generates the shortcuts for your project&lt;/li&gt;&lt;li&gt;It can open your project in CIDE&lt;/li&gt;&lt;li&gt;Lots of drag and drop&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;An update is also available for Concept Application Server, that now is aware for server shutdown and it kills all its child processes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7931177627991715364?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7931177627991715364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7931177627991715364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7931177627991715364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7931177627991715364'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/07/gyrogears-20-is-here.html' title='GyroGears 2.0 is here!'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-iSZhCg92XbM/ThhEshslAcI/AAAAAAAAAQI/kciwi0ekeWI/s72-c/gyrohomescreen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7098501206248605601</id><published>2011-06-24T00:45:00.006+03:00</published><updated>2011-09-18T22:20:49.688+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='7 years'/><title type='text'>7 years of Concept</title><content type='html'>Has it been 7 years already? ... yes. And now Concept is stronger mostly due to GyroGears. Today I've released the 2.0 beta version of GyroGears. It includes lots of new features, like:&lt;br /&gt;- application import&lt;br /&gt;- sub-applications&lt;br /&gt;- automatic Do/Install package creating&lt;br /&gt;- CIDE link&lt;br /&gt;- scanner for modified files&lt;br /&gt;- lots of bug fixes&lt;br /&gt;- a brand new interface&lt;br /&gt;- fewer buttons and more drag and drop&lt;br /&gt;- single view&lt;br /&gt;&lt;br /&gt;I still remember the day I've seen the first hello world application written in Concept: it was a cool morning of June, the sun just raised and I was struggling to keep my eyes opened. This was the first run of an Concept application using the current architecture.&lt;br /&gt;&lt;br /&gt;Bellow you'll find some screenshots with the new GyroGears 2.0 interface:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-us96I_IptFI/TgO3I_VEGVI/AAAAAAAAAP4/H_Qbk4XPsAo/s1600/s6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://1.bp.blogspot.com/-us96I_IptFI/TgO3I_VEGVI/AAAAAAAAAP4/H_Qbk4XPsAo/s400/s6.png" alt="" id="BLOGGER_PHOTO_ID_5621538124955130194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ioZAWmCzoZs/TgO3JH46koI/AAAAAAAAAQA/5UBU_eYqZ78/s1600/s7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://4.bp.blogspot.com/-ioZAWmCzoZs/TgO3JH46koI/AAAAAAAAAQA/5UBU_eYqZ78/s400/s7.png" alt="" id="BLOGGER_PHOTO_ID_5621538127252984450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am sure you will like it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7098501206248605601?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7098501206248605601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7098501206248605601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7098501206248605601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7098501206248605601'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/06/7-yeas-of-concept.html' title='7 years of Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-us96I_IptFI/TgO3I_VEGVI/AAAAAAAAAP4/H_Qbk4XPsAo/s72-c/s6.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4989538873986505777</id><published>2011-03-06T13:32:00.005+02:00</published><updated>2011-03-06T13:59:59.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server 2.1'/><title type='text'>Concept Application Server 2.1</title><content type='html'>Starting today Concept Application Server 2.1 RC is available for download. Has a slightly optimized core that uses less CPU cycles for compiling. A few security enhancements, but the really cool features are in GyroGears that breaks compatibility with CAS 2.0 for data record sync and Gyro talk using the new InterApp Message Exchange System available in 2.1 that allows us to send messages to all instances of a given application. Added MurmurHash for comparing keys instead of string comparison (about 20 times faster) used directly by the concept server core.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The solved problems are:&lt;/span&gt;&lt;br /&gt;An user (u1) updates a record that is in a master view of another user (u2). u2 then can refresh the view to see the changes. Now, using the new InterApp/MES u2 (and all other users) are informed that new data is available for their view and data is updated without refreshing in real time. Cool, right ?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7n-Qety4jvw/TXN2cazk_aI/AAAAAAAAAPc/9aDEWLXPdOA/s1600/records.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 211px;" src="http://3.bp.blogspot.com/-7n-Qety4jvw/TXN2cazk_aI/AAAAAAAAAPc/9aDEWLXPdOA/s400/records.png" alt="" id="BLOGGER_PHOTO_ID_5580934593846246818" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Note the star on the first row. That record was added by another user, and now is available in all other instances without any need of refreshing the view. Sorting may not apply until a full refresh is requested.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Another problem was the communication between users of the same application. Now, a pane for chat is available in every GyroGears application.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-bn44nzas_u8/TXN1vP94RnI/AAAAAAAAAPU/fm0mFcrE_vQ/s1600/chat.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 335px; height: 400px;" src="http://2.bp.blogspot.com/-bn44nzas_u8/TXN1vP94RnI/AAAAAAAAAPU/fm0mFcrE_vQ/s400/chat.png" alt="" id="BLOGGER_PHOTO_ID_5580933817842550386" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4989538873986505777?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4989538873986505777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4989538873986505777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4989538873986505777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4989538873986505777'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/03/concept-application-server-21.html' title='Concept Application Server 2.1'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7n-Qety4jvw/TXN2cazk_aI/AAAAAAAAAPc/9aDEWLXPdOA/s72-c/records.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6026413812667037769</id><published>2011-02-09T11:19:00.005+02:00</published><updated>2011-02-09T11:32:11.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>GyroGears 1.6</title><content type='html'>GyroGears 1.6 is now available in Concept Application Server 2.0.52 or later&lt;br /&gt;&lt;br /&gt;Just think how many hours could you spent in implementing a true database audit. Gyro 1.6 solves this automatically by just checking one box (see the screenshots bellow). Another interesting new feature is the read-only condition. For example, one of my clients is an ISP. And it has service requests, that are analyzed and solved. After a request is solved it cannot be edited anymore, regarding any user rights. For that, is enough to put a read-only condition like request.Status=="Closed" and if is true, it cannot be edited anymore.&lt;br /&gt;&lt;br /&gt;Some of the new features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entity audit with just a check box. You can see how an object looked at any given date.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hint callback - you can set a function for each field to be called when an object is loaded. This is useful in case you want to set a specific hint or to force some rules.  You can also use it to create custom controls.&lt;/li&gt;&lt;li&gt;Timestamp for database objects (creation time and last modify)&lt;/li&gt;&lt;li&gt;Read-only condition - you can set a custom condition for switching a form in read-only mode.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TVJdZ3yrctI/AAAAAAAAAPE/NP5SG-Q4HMA/s1600/gyro.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 291px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TVJdZ3yrctI/AAAAAAAAAPE/NP5SG-Q4HMA/s400/gyro.png" alt="" id="BLOGGER_PHOTO_ID_5571618388065350354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TVJdnNogRoI/AAAAAAAAAPM/z4nRhyjUrYU/s1600/versionare.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 308px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TVJdnNogRoI/AAAAAAAAAPM/z4nRhyjUrYU/s400/versionare.png" alt="" id="BLOGGER_PHOTO_ID_5571618617266554498" border="0" /&gt;&lt;/a&gt;Notice the "Revisions" window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6026413812667037769?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6026413812667037769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6026413812667037769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6026413812667037769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6026413812667037769'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/02/gyrogears-16.html' title='GyroGears 1.6'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TVJdZ3yrctI/AAAAAAAAAPE/NP5SG-Q4HMA/s72-c/gyro.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8811606429437679187</id><published>2011-01-23T19:50:00.012+02:00</published><updated>2011-01-25T09:41:24.446+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='mbrola'/><category scheme='http://www.blogger.com/atom/ns#' term='speex'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='gmp'/><category scheme='http://www.blogger.com/atom/ns#' term='imagemagick'/><title type='text'>Imagemagick. GMP. Mbrola. Speex.</title><content type='html'>Freeimage finally got to me: doesn't handle transparency. Then, I remembered a friend of mine talking about ImageMagick. I was amazed by the rich API - more than 500 functions for MagickWand interface than enables you do almost anything when it comes to image processing. I've written a wrapper for it: &lt;a href="http://www.radgs.com/docs/help/standard.graph.imagemagick.html"&gt;http://www.radgs.com/docs/help/standard.graph.imagemagick.html&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxtUhFJiaI/AAAAAAAAAOg/KO9DuAWCMAI/s1600/test2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxtUhFJiaI/AAAAAAAAAOg/KO9DuAWCMAI/s400/test2.png" alt="" id="BLOGGER_PHOTO_ID_5565443438767868322" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxyraZ1SsI/AAAAAAAAAOo/hSbe9tjle0M/s1600/code.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 219px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxyraZ1SsI/AAAAAAAAAOo/hSbe9tjle0M/s400/code.png" alt="" id="BLOGGER_PHOTO_ID_5565449329670703810" border="0" /&gt;&lt;/a&gt;Easy and clean interface, with lots of supported formats, it seems to be the best solution for Gyro image processing.  It can also output text on images, using custom fonts.&lt;br /&gt;&lt;br /&gt;Concept doesn't handle fractions, and sometimes you need fractional computations. After a little research, I discovered GMP, a fast library that can handle big integers (and I mean VERY BIG), rational numbers, big floating points numbers and has even a random number generator. It can do prime checks, greatest common divisor and more.&lt;br /&gt;&lt;br /&gt;Here is the API documentation: &lt;a href="http://www.radgs.com/docs/help/standard.math.gmp.html"&gt;http://www.radgs.com/docs/help/standard.math.gmp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For some time, I wanted a TTS(text to speech) engine API in Concept. It was a hard decision, but I went for a closed-source project: Mbrola.&lt;br /&gt;The main reasons were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nice and clean API&lt;/li&gt;&lt;li&gt;Support for many languages&lt;/li&gt;&lt;li&gt;Fast&lt;/li&gt;&lt;li&gt;Cross platform&lt;/li&gt;&lt;/ul&gt;So what if is not Open Source?!&lt;br /&gt;I wanted to write a plug-in for GyroGears to read the errors. Then, an application could tell you "that's wrong, you retard".&lt;br /&gt;The true reason for this is accessibility for people that can't see. I have a friend in that situation, and told me that GTK is unavailable for him because it doesn't work well with screen reader software. Problem solved now with MBROLA.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxzEKCw4RI/AAAAAAAAAOw/d0wslXhzGS4/s1600/parrot_speex_org-3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 181px; height: 80px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxzEKCw4RI/AAAAAAAAAOw/d0wslXhzGS4/s400/parrot_speex_org-3.png" alt="" id="BLOGGER_PHOTO_ID_5565449754775707922" border="0" /&gt;&lt;/a&gt;Concept Client has an audio stream interface that can handle speex compressed streams. In conjunction with mbrola, now an audio stream can be compressed by the server, using the low-level interface &lt;a href="http://www.radgs.com/docs/help/standard.arch.speex.html"&gt;http://www.radgs.com/docs/help/standard.arch.speex.html&lt;/a&gt; or the high-level, convenient interfaces &lt;a href="http://www.radgs.com/docs/help/SpeexDecoder.html"&gt;http://www.radgs.com/docs/help/SpeexDecoder.html&lt;/a&gt; and &lt;a href="http://www.radgs.com/docs/help/SpeexEncoder.html"&gt;http://www.radgs.com/docs/help/SpeexEncoder.html&lt;/a&gt;. This enables you to compress the audio data on the server, in real time using speex (a free codec for free speech).&lt;br /&gt;&lt;br /&gt;On Gyro, I've debugged, as usual. Also, the alerts are now prettier and tested in real-life application.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxz684hxVI/AAAAAAAAAO4/Q3Scucsm1Vk/s1600/s1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 191px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxz684hxVI/AAAAAAAAAO4/Q3Scucsm1Vk/s400/s1.png" alt="" id="BLOGGER_PHOTO_ID_5565450696135918930" border="0" /&gt;&lt;/a&gt;Notice the yellow zone - the alerts.&lt;br /&gt;&lt;br /&gt;Some minor bugs fixed in concept core and standard.lib.str that caused some problems with string constants containing the zero character.&lt;br /&gt;&lt;br /&gt;This week I will focus on the GyrGears chart library (gdcharts). There are some problems with charts that don't feet in the designated area and causes a crash. I want to try to fix gdcharts or replace it with swfdec + open flash charts (looking very cool).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8811606429437679187?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8811606429437679187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8811606429437679187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8811606429437679187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8811606429437679187'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/01/imagemagick-gmb-mbrola-speex.html' title='Imagemagick. GMP. Mbrola. Speex.'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TTxtUhFJiaI/AAAAAAAAAOg/KO9DuAWCMAI/s72-c/test2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-678717411344219958</id><published>2011-01-05T20:37:00.004+02:00</published><updated>2011-01-05T20:50:02.997+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='secure login'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='secure'/><category scheme='http://www.blogger.com/atom/ns#' term='chunked file'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept 2.0'/><title type='text'>Security even for non crypted for Concept 2.0</title><content type='html'>I've added a few features in Concept 2.0:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chunked files and cookies: This allows the asynchronous transfer of files between the server and client, files of virtually unlimited size&lt;/li&gt;&lt;li&gt;Optimized transfer for non-chunked files (the client now receives the file buffer only if the user accepted it)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Security warnings for the Concept Client when an application tries to execute a potentially dangerous command&lt;/li&gt;&lt;li&gt;Optimized concepts:// protocol (less CPU cycles per message)&lt;/li&gt;&lt;li&gt;Secure log-in for uncrypted sessions. For now, 3 methods of authentication are available: &lt;span style="font-weight: bold;"&gt;MD5&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;SHA1&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;PLAIN&lt;/span&gt;. Old clients are using the PLAIN method by default, but for new applications SHA1 is recommended. The password is returned as (for SHA1): SHA1(challenge + SHA1(password)). Challenge is a 64 character random generated buffer (characters with values from 0 to 0xFF).&lt;/li&gt;&lt;li&gt;In GyroGears: SQLiteNoLock driver was added in order to avoid transactions when using SQLite (SQLite locks the entire database instead of just only one row).&lt;/li&gt;&lt;li&gt;A major change in the Gyro generated ORM: for file and multimedia data type, if object is stored on disk, instead of the object buffer, it returns the File handle.&lt;/li&gt;&lt;li&gt;Minor bug-fixes in the log system of Concept Application Server that caused "unknown" ip has been disconnected.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-678717411344219958?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/678717411344219958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=678717411344219958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/678717411344219958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/678717411344219958'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2011/01/security-even-for-non-crypted-for.html' title='Security even for non crypted for Concept 2.0'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3281382059952748748</id><published>2010-12-27T21:02:00.004+02:00</published><updated>2010-12-27T21:16:50.156+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='GyroGers'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept 2.0'/><title type='text'>Concept 2.0 RC available</title><content type='html'>Concept 2.0 RC is now available. Now it supports IPv6 both Concept Client and Server.&lt;br /&gt;Except the announced features, I've added a few unplanned ones:&lt;br /&gt;&lt;br /&gt;1) Background textures for windowed objects&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk2GIa6vI/AAAAAAAAAOA/jujSeV9TttA/s1600/beekeeper.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk2GIa6vI/AAAAAAAAAOA/jujSeV9TttA/s400/beekeeper.png" alt="" id="BLOGGER_PHOTO_ID_5555441758371506930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2) User confirmation for operations that pose a security risk&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk2cLOF3I/AAAAAAAAAOI/zebBBB0NGuk/s1600/question.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 235px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk2cLOF3I/AAAAAAAAAOI/zebBBB0NGuk/s400/question.png" alt="" id="BLOGGER_PHOTO_ID_5555441764288829298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3) Alerts in GyroGears&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk25CQWyI/AAAAAAAAAOQ/1koYBrcsaEA/s1600/alerts.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 383px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk25CQWyI/AAAAAAAAAOQ/1koYBrcsaEA/s400/alerts.png" alt="" id="BLOGGER_PHOTO_ID_5555441772035857186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A few tests are still to go, but it is generally stable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3281382059952748748?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3281382059952748748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3281382059952748748' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3281382059952748748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3281382059952748748'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/12/concept-20-rc-available.html' title='Concept 2.0 RC available'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRjk2GIa6vI/AAAAAAAAAOA/jujSeV9TttA/s72-c/beekeeper.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7994115857924886202</id><published>2010-12-22T21:50:00.005+02:00</published><updated>2010-12-22T22:06:31.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><title type='text'>Concept 2.0 sneak preview</title><content type='html'>I've been working a lot lately to the new services and Concept Application Server.&lt;br /&gt;A new operator added to the language core:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;operator ??&lt;/span&gt; (cannot be overloaded)&lt;br /&gt;&lt;br /&gt;Is somehow similar to || except that instead of true it returns the first non-null value.&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var object=new A();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var object2=new B();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var a=object ?? object2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If object is null, then a==object2 , if object is not null, a=object&lt;br /&gt;Also, arrays are a little special. An empty array is considered to be null, same for empty strings, so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var a= [] ?? [1,2,3];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;will return [1,2,3] and:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var s= "" ? "123";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;will return "123"&lt;br /&gt;&lt;br /&gt;A few changes in Concept Application Server core, more environment variables, like: CONCEPT_LOGFILE, CONCEPT_LIBRARY, CONCEPT_INCLUDE, CONCEPT_CERTIFICATE, CONCEPT_SERVERROOT, CONCEPT_INIPATH, CONCEPT_UseSharedMemoryPool, CONCEPT_PORT, CONCEPT_CGI_PORT, CONCEPT_SERVERNAME and CONCEPT_FILENAME&lt;br /&gt;&lt;br /&gt;A better serialization engine and a safer InterApp message exchange system is now available.&lt;br /&gt;&lt;br /&gt;Some screen shots from the working version of Concept BeeKeeper (concept administration tool):&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZT811vgI/AAAAAAAAANc/0tkSTRRR3po/s1600/bk1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 290px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZT811vgI/AAAAAAAAANc/0tkSTRRR3po/s400/bk1.png" alt="" id="BLOGGER_PHOTO_ID_5553599489785576962" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUY7XUmI/AAAAAAAAANs/DkQObItBP_k/s1600/bk3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 290px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUY7XUmI/AAAAAAAAANs/DkQObItBP_k/s400/bk3.png" alt="" id="BLOGGER_PHOTO_ID_5553599497324941922" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUrumZVI/AAAAAAAAAN0/x_djEaDd3d8/s1600/bk4.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 283px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUrumZVI/AAAAAAAAAN0/x_djEaDd3d8/s400/bk4.png" alt="" id="BLOGGER_PHOTO_ID_5553599502371677522" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUEFj_pI/AAAAAAAAANk/zU_EcMS7w7U/s1600/bk2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 290px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZUEFj_pI/AAAAAAAAANk/zU_EcMS7w7U/s400/bk2.png" alt="" id="BLOGGER_PHOTO_ID_5553599491730570898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For Concept Application Server 2.0 a new Client is provided (2.0). Old clients remain compatible (though some controls will look different).&lt;br /&gt;&lt;br /&gt;I'll post back when a BETA version will be available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7994115857924886202?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7994115857924886202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7994115857924886202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7994115857924886202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7994115857924886202'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/12/concept-20-sneak-preview.html' title='Concept 2.0 sneak preview'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TRJZT811vgI/AAAAAAAAANc/0tkSTRRR3po/s72-c/bk1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3693536056268569145</id><published>2010-12-13T11:17:00.003+02:00</published><updated>2010-12-13T11:28:55.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GyropGears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept 2.0'/><title type='text'>Preparing for Concept 2.0</title><content type='html'>Concept 1.x is now powerful and mature. It is stable and the relation between Concept Application Server and GyroGears is now truly symbiotic. GyroGears is also stable and prepared to evolve into a new generation of application generators. The 2.0 release of Concept will include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;faster execution time&lt;/li&gt;&lt;li&gt;smaller memory footprint&lt;/li&gt;&lt;li&gt;less CPU usage&lt;/li&gt;&lt;li&gt;same zero crash-tolerance policy&lt;/li&gt;&lt;li&gt;more security features&lt;/li&gt;&lt;li&gt;Zero-downtime updating system that will  allow the update of Concept Server with no downtime (or with at most a few seconds of downtime without affecting the users).&lt;/li&gt;&lt;li&gt;CLB (Concept Load Balancer) out of BETA&lt;/li&gt;&lt;li&gt;CIDE enhancements&lt;/li&gt;&lt;li&gt;Do/Install deployment tool replacing CUDW&lt;/li&gt;&lt;li&gt;Binary compatible with Concept 1.x (Concept will always be backward-compatible)&lt;/li&gt;&lt;li&gt;An enhanced GyroGears (1.2) distribution&lt;/li&gt;&lt;li&gt;Thread-safe variables and better multithread APIs&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Concept 2.0 will focus on mission critical applications. The first BETA version will be available early in 2011. Some of the features are already available in the official Concept 1.2 distribution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3693536056268569145?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3693536056268569145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3693536056268569145' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3693536056268569145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3693536056268569145'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/12/preparing-for-concept-20.html' title='Preparing for Concept 2.0'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6427461728676962630</id><published>2010-12-05T18:14:00.004+02:00</published><updated>2010-12-05T18:27:45.551+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accel'/><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><category scheme='http://www.blogger.com/atom/ns#' term='GyroGeas'/><category scheme='http://www.blogger.com/atom/ns#' term='WebKit'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>Faster compiler (6x), CSV library, client updates and Gyro</title><content type='html'>I've had some work done on the accel compiler - which was a little slow (12mb of source code compiled in about 8 minutes). Now, is about few seconds over a minute ... After some tests, the average optimization is about 6x (six times faster).&lt;br /&gt;&lt;br /&gt;I've added a convenient csv library (&lt;span style="font-weight: bold;"&gt;standard.lib.csv&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;CSV.con&lt;/span&gt;) with both a complex and a simple interface.&lt;br /&gt;&lt;br /&gt;For the simple interface you can do something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;matrix&lt;/span&gt;=CSV::Parse(ReadFile(&lt;span style="color: rgb(153, 0, 0);"&gt;"data.txt"&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;matrix &lt;/span&gt;being an array of arrays.&lt;br /&gt;&lt;br /&gt;Also I've updated the Concept Client - some small memory leaks fixed and the webkit component. I dropped the microhttpd used to emulate a server for managing local request (request that are handled within the application itself). Now the request are intercepted directly from the webkit/libsoup requests.&lt;br /&gt;&lt;br /&gt;In GyroGears I've added a new field (optional) in the User entity: &lt;span style="font-weight: bold;"&gt;Failed attempts&lt;/span&gt;&lt;br /&gt;This logs the failed attempts for an user, and then locks the account after 3 failed attempts.&lt;br /&gt;&lt;br /&gt;I have no pretty screen shots this time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6427461728676962630?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6427461728676962630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6427461728676962630' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6427461728676962630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6427461728676962630'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/12/faster-compiler-6x-csv-library-client.html' title='Faster compiler (6x), CSV library, client updates and Gyro'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8628948343018436506</id><published>2010-11-23T10:22:00.006+02:00</published><updated>2010-11-23T10:33:57.823+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Sheet'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Grid'/><title type='text'>Sheet, GyroGears and Apache follow up</title><content type='html'>Concept Framework was missing a nice Grid control. After some searches I came over GtkSheet in gtk-extra-2.0. A very nice set of controls, but with some problems on windows. I've took some file from the CVS and is working fine now. I've made a test application for reading Excel files:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt6ng8-3TI/AAAAAAAAAM0/0SrFLmIv3-w/s1600/grid.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 353px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt6ng8-3TI/AAAAAAAAAM0/0SrFLmIv3-w/s400/grid.png" alt="" id="BLOGGER_PHOTO_ID_5542658585688726834" border="0" /&gt;&lt;/a&gt;Works fine with excel 97-2003 files, bot doesn't support images (however the grid does, and you can insert virtually any control - buttons, charts, etc.).&lt;br /&gt;&lt;br /&gt;Also I've made the grid available in GyroGears via the long string data type, with the "Sheet" option. Here is a sample screen shot from a Gyro application:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt7D2KM-rI/AAAAAAAAAM8/lz5UzbUWQ28/s1600/gyrosheet.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 219px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt7D2KM-rI/AAAAAAAAAM8/lz5UzbUWQ28/s400/gyrosheet.png" alt="" id="BLOGGER_PHOTO_ID_5542659072417659570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the previous post I've talked about the caching on Apache HTTPD2. I've made some nice charts (in Concept) that illustrate the server response time for cached csp scripts, static html and cached csp.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt7c5xWzwI/AAAAAAAAANE/N3tkOEnRn9s/s1600/trafic.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 298px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt7c5xWzwI/AAAAAAAAANE/N3tkOEnRn9s/s400/trafic.png" alt="" id="BLOGGER_PHOTO_ID_5542659502883917570" border="0" /&gt;&lt;/a&gt;I've ran the test several times and isolated the first run and the best run. As you can see, for Cached CSP the delivery time is slightly better from the static HTML. And some random key were generated to memcached to emulate a real-world situation.&lt;br /&gt;I've activated the engine on &lt;a href="http://www.booha.ro"&gt;www.booha.ro&lt;/a&gt; , and the optimization is now dramatic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8628948343018436506?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8628948343018436506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8628948343018436506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8628948343018436506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8628948343018436506'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/11/sheet-gyrogears-and-apache-follow-up.html' title='Sheet, GyroGears and Apache follow up'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOt6ng8-3TI/AAAAAAAAAM0/0SrFLmIv3-w/s72-c/grid.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7067400706205723306</id><published>2010-11-19T00:15:00.003+02:00</published><updated>2010-11-19T00:31:13.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='memcache'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache module'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Its awesomeness, Apache HTTPD2</title><content type='html'>I've been working a lot in the last few days. I've added a GeoIP wrapper for Concept, documentation available at &lt;a href="http://www.radgs.com/docs/help/GeoIP.html"&gt;http://www.radgs.com/docs/help/GeoIP.html&lt;/a&gt;. Nice library by the way.&lt;br /&gt;&lt;br /&gt;Now, for the cool stuff. I was thinking how much content is served to all the visitors ... and that content is cached by memcached to reduce workload ... but I think I can go further - direct caching from the web server. Let's see in the pretty colored schema bellow.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOWlxBPmwhI/AAAAAAAAAMs/UPST3QkHgfA/s1600/cachemodel.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 350px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOWlxBPmwhI/AAAAAAAAAMs/UPST3QkHgfA/s400/cachemodel.png" alt="" id="BLOGGER_PHOTO_ID_5541017178115326482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Let's say that an user (Client1) makes a request to Apache HTTPD. The server will call ConceptCGI to process the request, and the script will access a memcached server for caching data. But, if we cache the whole page, images, etc., why is a need for the CGI to run? Well, it isn't. For that I write an Apache module (mod_conceptcache) that allows the server to serve cached memcached data very fast, so fast that Client 2 will access cached data very fast without generating any significant CPU or memory usage on the server - and that's critical because the server can serve more users using the same resources. I've set some nice APIs for the back-end, the programmer being able to explicitly cache data for visitors, users or locations (as you can see in the figure, mod_concept_cache is linked to GeoIP). Documentation is available on &lt;a href="http://www.radgs.com/docs/help/ApacheCacher.html"&gt;http://www.radgs.com/docs/help/ApacheCacher.html&lt;/a&gt;.&lt;br /&gt;GyroGears is already aware of this, and generates code for the http back-end using ApacheCacher.&lt;br /&gt;&lt;br /&gt;PS: Fast = tens of times faster&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7067400706205723306?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7067400706205723306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7067400706205723306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7067400706205723306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7067400706205723306'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/11/its-awesomeness-apache-httpd2.html' title='Its awesomeness, Apache HTTPD2'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TOWlxBPmwhI/AAAAAAAAAMs/UPST3QkHgfA/s72-c/cachemodel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5082046282465132402</id><published>2010-11-09T13:12:00.003+02:00</published><updated>2010-11-09T13:17:50.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>SQLite now in GyroGears</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TNktT2EEODI/AAAAAAAAAMk/GYpBe4l7sOU/s1600/sqlite370_banner.gif"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 220px; height: 101px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TNktT2EEODI/AAAAAAAAAMk/GYpBe4l7sOU/s400/sqlite370_banner.gif" alt="" id="BLOGGER_PHOTO_ID_5537507035782068274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Added SQLite on the list of supported servers in GyroGears. Now GyroGears is tested on MySQL, PostgreSQL, Firebird and SQLite. Oracle XE support will be available soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5082046282465132402?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5082046282465132402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5082046282465132402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5082046282465132402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5082046282465132402'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/11/sqlite-now-in-gyrogears.html' title='SQLite now in GyroGears'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TNktT2EEODI/AAAAAAAAAMk/GYpBe4l7sOU/s72-c/sqlite370_banner.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3728137112451443985</id><published>2010-11-03T18:53:00.005+02:00</published><updated>2010-11-03T19:03:36.519+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>HTTP as a transport layer</title><content type='html'>I've implemented two modules - one for Concept Client and another for Apache HTTPD 2 that allows concept:// packages to be transported over http://. It uses GET for receiving data from the Concept Application Server and POST to send the concept:// binary package. This is the first step towards the Concept://JavaScript Client that will use the concept:// protocol over http://.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TNGUwz5PL5I/AAAAAAAAAMc/l_7ktqksNBQ/s1600/model.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TNGUwz5PL5I/AAAAAAAAAMc/l_7ktqksNBQ/s400/model.png" alt="" id="BLOGGER_PHOTO_ID_5535368983299960722" border="0" /&gt;&lt;/a&gt;The main benefit of using http:// as a transport layer is that connection can now be stateless, although is a little bit slower than the concept:// standard protocol. Another major advantage is on firewalled networks that allow only HTTP traffic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3728137112451443985?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3728137112451443985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3728137112451443985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3728137112451443985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3728137112451443985'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/11/http-as-transport-layer.html' title='HTTP as a transport layer'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TNGUwz5PL5I/AAAAAAAAAMc/l_7ktqksNBQ/s72-c/model.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-972509724853699877</id><published>2010-10-28T20:28:00.007+03:00</published><updated>2010-10-28T20:33:56.007+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='touch screen'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>Full touch screen support</title><content type='html'>A new class available in Concept Framework: RTouchKeyboard. Is a fully customizable keyboard layout (the constructor takes an array for the rendered keys).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TMmzyvhOPQI/AAAAAAAAAMM/cXy9uATnDiw/s1600/keyboard.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 143px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TMmzyvhOPQI/AAAAAAAAAMM/cXy9uATnDiw/s400/keyboard.png" alt="" id="BLOGGER_PHOTO_ID_5533151301532007682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The keyboard is already integrated in GyroGears.&lt;br /&gt;&lt;br /&gt;A few changes in the Concept Client (windows version): added native Save File and Load File dialogs replacing the GTK dialogs that use to crash when listing files with diacritics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-972509724853699877?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/972509724853699877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=972509724853699877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/972509724853699877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/972509724853699877'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/10/full-touch-screen-support.html' title='Full touch screen support'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TMmzyvhOPQI/AAAAAAAAAMM/cXy9uATnDiw/s72-c/keyboard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3280015805831618635</id><published>2010-10-20T23:19:00.005+03:00</published><updated>2010-10-22T13:58:52.109+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='WebKit'/><category scheme='http://www.blogger.com/atom/ns#' term='libxls'/><title type='text'>Excel support in Concept</title><content type='html'>New library added (no. 55): standard.lib.xls&lt;br /&gt;I've came across libxls accidentally. I was surprise to see that is a really nice library with simple APIs - not very mature yet but it promises a lot. I just had to write a wrapper, and I did.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TMFuWigYXaI/AAAAAAAAAL8/INrnp7ajq84/s1600/xls.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 229px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TMFuWigYXaI/AAAAAAAAAL8/INrnp7ajq84/s400/xls.png" alt="" id="BLOGGER_PHOTO_ID_5530823150886477218" border="0" /&gt;&lt;/a&gt;Nice and simple APIs, as usual. Of course, you have &lt;a href="http://www.radgs.com/docs/help/standard.lib.xls.html"&gt;low level cell accessing APIs&lt;/a&gt; but xls_matrix is convenient (at least for me) - it returns a sheet as a matrix.&lt;br /&gt;&lt;br /&gt;I'm having problems with &lt;a href="https://bugs.webkit.org/show_bug.cgi?id=47856"&gt;a bug in webkit&lt;/a&gt; - when is in editable mode, and I move the cursor from right to left over a link it freezes. I've submitted a bug report and now I wait. Until it will be fixed, I hacked the client module in order to ignore the left keyboard key. Is not nice, but is working (the cursor can be moved with the mouse with no problems).&lt;br /&gt;&lt;br /&gt;I've integrated MemCached client into GyroGears. Now, when generating http:// applications, you can set in DataBase.ini or MyDataBase.ini MemCachedServer = "localhost" for example, and the application will use the server running on localhost. If no host is set, no caching will be available.&lt;br /&gt;&lt;br /&gt;Tomorrow will open the new radgs.com website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3280015805831618635?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3280015805831618635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3280015805831618635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3280015805831618635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3280015805831618635'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/10/excel-support-in-concept.html' title='Excel support in Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TMFuWigYXaI/AAAAAAAAAL8/INrnp7ajq84/s72-c/xls.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5862073542102381135</id><published>2010-10-12T05:29:00.003+03:00</published><updated>2010-10-12T05:34:10.218+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='WYSIWYG'/><title type='text'>Concept native WYSIWYG control</title><content type='html'>I've created a WYSIWYG widget based on Webkit. Tomorrow I'll dump nicedit from GyroGears in favor of the native RWebEditor control.&lt;br /&gt;&lt;br /&gt;The interface is pretty simple: RWebEditor extends RWebView and ads just one property: Text&lt;br /&gt;&lt;br /&gt;The code should look like this:&lt;br /&gt;&lt;br /&gt;Editor=new RWebEditor(owner);&lt;br /&gt;Editor.Text="&lt;b&gt;my html code&lt;/b&gt;";&lt;br /&gt;Editor.Show();&lt;br /&gt;&lt;br /&gt;Simple enough ?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TLPI3yCpeqI/AAAAAAAAALs/oDVZTexCqNo/s1600/editor.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 353px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TLPI3yCpeqI/AAAAAAAAALs/oDVZTexCqNo/s400/editor.png" alt="" id="BLOGGER_PHOTO_ID_5526982028364970658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On windows webkit-gtk is pretty unstable. I hope to get a fix soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5862073542102381135?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5862073542102381135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5862073542102381135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5862073542102381135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5862073542102381135'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/10/concept-native-wysiwyg-control.html' title='Concept native WYSIWYG control'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TLPI3yCpeqI/AAAAAAAAALs/oDVZTexCqNo/s72-c/editor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1381540793444748232</id><published>2010-10-11T14:19:00.004+03:00</published><updated>2010-10-11T14:27:36.236+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='captcha'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Framework'/><title type='text'>Captcha in Concept Framework 1.2</title><content type='html'>Added a new import library: &lt;span style="font-weight: bold;"&gt;standard.lib.captcha&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a captcha generator based on &lt;a href="http://brokestream.com/captcha.html"&gt;libcaptcha&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;The APIs are simple, as usual:&lt;br /&gt;&lt;br /&gt;var text=Captcha(var gif);&lt;br /&gt;WriteFile(gif, "captcha.gif");&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resulting in&lt;/span&gt;&lt;br /&gt;&lt;a href="http://brokestream.com/captcha.do"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 70px;" src="http://brokestream.com/captcha.do" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;text will contain the actual generated letters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1381540793444748232?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1381540793444748232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1381540793444748232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1381540793444748232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1381540793444748232'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/10/captcha-in-concept-framework-12.html' title='Captcha in Concept Framework 1.2'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8733015340101921366</id><published>2010-09-29T23:46:00.005+03:00</published><updated>2010-09-30T00:12:33.434+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrapper'/><category scheme='http://www.blogger.com/atom/ns#' term='MSMTP'/><category scheme='http://www.blogger.com/atom/ns#' term='mail library'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>How do you create ?</title><content type='html'>This morning I was in a hurry to get to my desktop. I had to get to the old keyboard, filled with kitten hair because I wanted a new feature:  a class generator for command line-based scripts or programs. I've tested it with &lt;a href="http://msmtp.sourceforge.net/"&gt;MSMTP&lt;/a&gt; (command line smtp client).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TKOn3-8zb7I/AAAAAAAAALc/IJPz4uyPdWU/s1600/msmtp.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 172px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TKOn3-8zb7I/AAAAAAAAALc/IJPz4uyPdWU/s400/msmtp.png" alt="" id="BLOGGER_PHOTO_ID_5522442148319031218" border="0" /&gt;&lt;/a&gt;Every property was automatically generated from a file that contains parameters description&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#Separator is =&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--version&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--help&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--pretend&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--debug&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--serverinfo&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--rmqs&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--file=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--account=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--host=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--port=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--timeout=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--protocol=smtp|lmtp&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--domain=&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;--from&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TKOq47RnJvI/AAAAAAAAALk/zdCgm7XdfGE/s1600/snippet.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 189px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TKOq47RnJvI/AAAAAAAAALk/zdCgm7XdfGE/s400/snippet.png" alt="" id="BLOGGER_PHOTO_ID_5522445463047317234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Using &lt;span style="font-weight: bold;"&gt;DoWrap.con&lt;/span&gt; (the tool) you can easily generate a wrapper for every command-line based tool.&lt;br /&gt;&lt;br /&gt;Also, I've translated Facebook.php from facebook php sdk to Facebook.con, having now the Facebook APIs available in Concept. I still don't use Facebook and I still won't. Nor twitter (Concept Twitter APIs are up-to-date).&lt;br /&gt;&lt;br /&gt;Gyro has now a working plug-in system. All features from now on will be implemented as plug-ins.&lt;br /&gt;&lt;br /&gt;Do you smile on your way to work?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8733015340101921366?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8733015340101921366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8733015340101921366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8733015340101921366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8733015340101921366'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/how-do-you-create.html' title='How do you create ?'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TKOn3-8zb7I/AAAAAAAAALc/IJPz4uyPdWU/s72-c/msmtp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2725764268283363126</id><published>2010-09-26T17:12:00.007+03:00</published><updated>2010-09-26T19:42:15.433+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='release candidate'/><category scheme='http://www.blogger.com/atom/ns#' term='skin'/><category scheme='http://www.blogger.com/atom/ns#' term='reports'/><title type='text'>GyroGears 1.2 RC1 Released !</title><content type='html'>&lt;span style="font-weight: bold;"&gt;GyroGears&lt;/span&gt; is out of BETA. Sure, a lot o things can still go wrong, but I'm fairly optimistic that is at release-quality level. I've added a few things:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Picture and multimedia data fields are now shown in PDF reports&lt;/span&gt; (picture bellow)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ9Vv4UuoiI/AAAAAAAAALM/2yYfulVoOiY/s1600/ScrReport.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 308px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ9Vv4UuoiI/AAAAAAAAALM/2yYfulVoOiY/s400/ScrReport.png" alt="" id="BLOGGER_PHOTO_ID_5521225949241057826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- A new skin based on the Blue Space II (a few color changes, different progress bar and a modified REditComboBox (the original had black text on black background)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ9W9MDSqmI/AAAAAAAAALU/MEeF0Y0dgtE/s1600/ScrSkin.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 323px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ9W9MDSqmI/AAAAAAAAALU/MEeF0Y0dgtE/s400/ScrSkin.png" alt="" id="BLOGGER_PHOTO_ID_5521227277386558050" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;- XML data import and export system now can work with pictures, multimedia or other files. Those are mime encoded into (or from) the XML file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Update the Twitter library (didn't work anymore due to changes in Twitter log in API)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And again ... hours of testing ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2725764268283363126?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2725764268283363126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2725764268283363126' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2725764268283363126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2725764268283363126'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/gyrogears-12-rc1-released.html' title='GyroGears 1.2 RC1 Released !'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ9Vv4UuoiI/AAAAAAAAALM/2yYfulVoOiY/s72-c/ScrReport.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4930202348592675572</id><published>2010-09-25T10:42:00.006+03:00</published><updated>2010-09-25T10:59:45.547+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='tray ballon'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='benchmark'/><title type='text'>New features and more testing</title><content type='html'>I've spent the last days optimizing GyroGeas for application with heavy data. I've tested MySQL, Firebird and PostgreSQL with databases of at least 500,000 random records. I was impressed by PostgreSQL (being surprisingly fast). On the worst case query, MySQL 5 executed a select (with indexes) in about 14 seconds, Firebird 2.5, in about 20 seconds and PostgreSQL 8.4 in less than 8 seconds. The average query took about 1 second. Firebird was very slow on executing SELECT COUNT()... GROUP BY statements. Except that, overall performance is relatively good for all of the three engines.&lt;br /&gt;&lt;br /&gt;New features in Concept Client:&lt;a href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ2qX5BLZwI/AAAAAAAAAK8/1WwogaAlMwI/s1600/notifycloud.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 343px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ2qX5BLZwI/AAAAAAAAAK8/1WwogaAlMwI/s400/notifycloud.png" alt="" id="BLOGGER_PHOTO_ID_5520756045645571842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Windows notify using the tray balloon&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ2rHaCTv7I/AAAAAAAAALE/Eh2paL-4pe0/s1600/randomdata.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 313px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ2rHaCTv7I/AAAAAAAAALE/Eh2paL-4pe0/s400/randomdata.png" alt="" id="BLOGGER_PHOTO_ID_5520756861962534834" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Combo edit box with progress bar on background for pagination (progress bar shows current page/total pages fraction)&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;GyroGears now generates all the required indexes for the generated database. I've optimized all the queries and the speed was enhanced.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4930202348592675572?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4930202348592675572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4930202348592675572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4930202348592675572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4930202348592675572'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/new-features-and-more-testing.html' title='New features and more testing'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TJ2qX5BLZwI/AAAAAAAAAK8/1WwogaAlMwI/s72-c/notifycloud.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7553028617285813129</id><published>2010-09-21T17:04:00.003+03:00</published><updated>2010-09-21T17:08:33.980+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clipboard'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='picture'/><title type='text'>"Paste from clipboard" option for picture data type in GyroGears</title><content type='html'>I've added a new feature for "picture" data type: paste from clipboard.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJi8NnV32OI/AAAAAAAAAK0/n6xWQ1OY7TM/s1600/clip.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 44px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJi8NnV32OI/AAAAAAAAAK0/n6xWQ1OY7TM/s400/clip.png" alt="" id="BLOGGER_PHOTO_ID_5519368285427587298" border="0" /&gt;&lt;/a&gt;Now you can "open", "paste" or "capture from webcam".&lt;br /&gt;&lt;br /&gt;Simple but useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7553028617285813129?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7553028617285813129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7553028617285813129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7553028617285813129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7553028617285813129'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/paste-from-clipboard-option-for-picture.html' title='&quot;Paste from clipboard&quot; option for picture data type in GyroGears'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TJi8NnV32OI/AAAAAAAAAK0/n6xWQ1OY7TM/s72-c/clip.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8094533185868894973</id><published>2010-09-21T00:01:00.004+03:00</published><updated>2010-09-21T00:13:07.047+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hello world'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='memcache'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Memcached client now available in Concept</title><content type='html'>A few weeks ago I was talking with a friend of mine about memcached. I was very curious about what it can do, and it didn't disappoint me (&lt;a href="http://en.wikipedia.org/wiki/Memcached"&gt;more about memcached&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I've written a wrapper for libmemcached client library and now it's available for Concept. Here you have a code snippet illustrating a simple "hello world" memcached-based application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJfMwzg-OxI/AAAAAAAAAKU/PjUKw5lf0_s/s1600/snippet.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 162px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJfMwzg-OxI/AAAAAAAAAKU/PjUKw5lf0_s/s400/snippet.png" alt="" id="BLOGGER_PHOTO_ID_5519105007200123666" border="0" /&gt;&lt;/a&gt;It's really simple and you can ease off the database server. As a cool feature, it supports multiple servers, allowing the developer to dynamically add caching servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8094533185868894973?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8094533185868894973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8094533185868894973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8094533185868894973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8094533185868894973'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/memcached-client-now-available-in.html' title='Memcached client now available in Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TJfMwzg-OxI/AAAAAAAAAKU/PjUKw5lf0_s/s72-c/snippet.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7674148589968166468</id><published>2010-09-07T19:35:00.008+03:00</published><updated>2010-09-07T20:08:56.323+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>An elephant, a bird, a fish (yes, I know, dolphin != fish) friends of The Bee</title><content type='html'>Concept Bee (the black one, because blogspot doesn't know about transparency) is now friend with PostgreSQL, Firebird and MySQL.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq2NgFZWI/AAAAAAAAAJk/BLau0jbIcF4/s1600/concept-logo.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 64px; height: 64px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq2NgFZWI/AAAAAAAAAJk/BLau0jbIcF4/s200/concept-logo.png" alt="" id="BLOGGER_PHOTO_ID_5514212273331463522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1X8KyhI/AAAAAAAAAJM/1LfytwbprfU/s1600/images.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 100px; height: 65px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1X8KyhI/AAAAAAAAAJM/1LfytwbprfU/s200/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5514212258953742866" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1ZByxxI/AAAAAAAAAJU/gw3qLJ7XRTA/s1600/imagefb.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 78px; height: 77px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1ZByxxI/AAAAAAAAAJU/gw3qLJ7XRTA/s200/imagefb.jpg" alt="" id="BLOGGER_PHOTO_ID_5514212259245770514" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1uKKDlI/AAAAAAAAAJc/vyd4zS-X4N4/s1600/mysql-logo.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 125px; height: 81px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq1uKKDlI/AAAAAAAAAJc/vyd4zS-X4N4/s200/mysql-logo.png" alt="" id="BLOGGER_PHOTO_ID_5514212264917995090" border="0" /&gt;&lt;/a&gt;Now you can generate data-driven applications from scratch for these servers using GyroGears and a set of rules.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZsIu5SkQI/AAAAAAAAAJ8/qyvgg3ICfjU/s1600/gyro-database.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 246px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZsIu5SkQI/AAAAAAAAAJ8/qyvgg3ICfjU/s400/gyro-database.png" alt="" id="BLOGGER_PHOTO_ID_5514213691044827394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Oracle XE is still to be tested. I've made some cosmetic changes to the Gyro generated applications (some custom background and cooler tool bars).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZspWBLm_I/AAAAAAAAAKE/8fhSd5wzj0Q/s1600/Untitled.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 308px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZspWBLm_I/AAAAAAAAAKE/8fhSd5wzj0Q/s400/Untitled.png" alt="" id="BLOGGER_PHOTO_ID_5514214251302722546" border="0" /&gt;&lt;/a&gt;New visual markers (icons) based on row rules:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZtAfANMWI/AAAAAAAAAKM/nrcUPZAEzUA/s1600/Untitled2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 308px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZtAfANMWI/AAAAAAAAAKM/nrcUPZAEzUA/s400/Untitled2.png" alt="" id="BLOGGER_PHOTO_ID_5514214648851542370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Also some minor bugs are now fixed thanks to extensive testing with FirebirdSQL. I've posted a bug on the Firebird ODBC bug list regardin SQLNumParams when using "INSERT ... RETURNING id" in a prepared query (it returns the number of parameters + 1).&lt;br /&gt;&lt;br /&gt;And now I'm almost there ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7674148589968166468?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7674148589968166468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7674148589968166468' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7674148589968166468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7674148589968166468'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/elephant-fox-fish-yes-i-know-dolphin.html' title='An elephant, a bird, a fish (yes, I know, dolphin != fish) friends of The Bee'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/TIZq2NgFZWI/AAAAAAAAAJk/BLau0jbIcF4/s72-c/concept-logo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-579923479588905137</id><published>2010-09-02T01:14:00.005+03:00</published><updated>2010-09-06T12:57:36.885+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>GyroGears is now DBMS independent</title><content type='html'>I've just regenerated and tested some of my commercial GyroGears applications on PostgreSQL. I've added rules and definitions both for InnoDB and for PostgreSQL in Gyro. Firebird and Oracle should now work (I'll test it these days with Oracle XE). I'm systematically dropping MySQL/InnoDB in favor of PostgreSQL, which seems more suited to GyroGears applications - nicer API, mature transactional model, nicer support, friendlier tools and no Oracle nor Larry Ellison to sue me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-579923479588905137?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/579923479588905137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=579923479588905137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/579923479588905137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/579923479588905137'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/09/gyrogears-is-now-dbms-independent.html' title='GyroGears is now DBMS independent'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-396505747077595431</id><published>2010-08-19T10:40:00.005+03:00</published><updated>2010-08-19T10:45:39.489+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL cool driver</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TGzg59kWaAI/AAAAAAAAAI8/PCQOrGBSTKo/s1600/logopg70.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 158px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TGzg59kWaAI/AAAAAAAAAI8/PCQOrGBSTKo/s200/logopg70.gif" alt="" id="BLOGGER_PHOTO_ID_5507023730751465474" border="0" /&gt;&lt;/a&gt;I've wrapped these days a driver for PostgreSQL database. I must say that I'm more that impressed by the APIs that are at least clean and straight forward. I will gradually port all my applications from MySQL/InnoDB to PostgreSQL. I'm sure that PostgreSQL will have a really nice future. I was impressed by the way that Postgre handles blobs - you work with them as if they were files.&lt;br /&gt;&lt;br /&gt;For Concept Application Server some minor bug fixes, same for GyroGears.&lt;br /&gt;&lt;br /&gt;Also, source distribution is now (again) up to date.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-396505747077595431?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/396505747077595431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=396505747077595431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/396505747077595431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/396505747077595431'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/08/postgresql-cool-driver.html' title='PostgreSQL cool driver'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/TGzg59kWaAI/AAAAAAAAAI8/PCQOrGBSTKo/s72-c/logopg70.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8270512462845267806</id><published>2010-07-20T09:20:00.003+03:00</published><updated>2010-07-20T09:37:04.388+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='happy birthday'/><title type='text'>6 years of Concept</title><content type='html'>I'm getting closer to an official release after 6 years of Concept. With countless nights of coding, countless days of testing and debugging and many friends to suggest new features, Concept has now commercial quality, although is under an open source license.&lt;br /&gt;Without having a dead-line, I'm trying to create a safe, fast and powerful platform that integrates the best technologies, without focusing on a specific platform.&lt;br /&gt;&lt;br /&gt;Concept is ready to bring back the fun in coding.&lt;br /&gt;&lt;br /&gt;6 years and 2 days ago, in an afternoon I've started this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8270512462845267806?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8270512462845267806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8270512462845267806' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8270512462845267806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8270512462845267806'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/07/6-years-of-concept.html' title='6 years of Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-596397520067821140</id><published>2010-07-11T13:51:00.006+03:00</published><updated>2010-07-11T14:12:10.280+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='OCR'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Framework'/><title type='text'>OCR in Concept Framework</title><content type='html'>I've included &lt;a href="http://code.google.com/p/tesseract-ocr/"&gt;tesseract&lt;/a&gt; in Concept Framework. It's a really nice OCR library and I'm impressed by the quality of the character recognition.  I've tried to keep the APIs really simple: just 2 functions, one for debugging and one for the actual OCR.&lt;br /&gt;&lt;br /&gt;Prototype looks like this:&lt;br /&gt;&lt;br /&gt;number OCR(szImage_filename, refOutText, szLanguage="eng", szDataPath="", szConfigFile="");&lt;br /&gt;&lt;br /&gt;It returns OCR_E_CANT_OPEN or OCR_E_CANT_READ if error, or 0 otherwise.&lt;br /&gt;&lt;br /&gt;A basic example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import standard.lib.ocr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;class&lt;/span&gt; Main {&lt;br /&gt;      &lt;span style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  function &lt;/span&gt;Main() {&lt;br /&gt;                     &lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;// if debug file is not set, nul or /dev/null is assumed&lt;/span&gt;&lt;br /&gt;              &lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;        //OCRDebugFile("");&lt;/span&gt;&lt;br /&gt;                     &lt;span style="color: rgb(51, 51, 255);"&gt;if&lt;/span&gt; (!&lt;span style="font-weight: bold;"&gt;OCR("cap.bmp", var data)&lt;/span&gt;)&lt;br /&gt;                                 &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;data&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I hope is as straight forward as it can be.&lt;br /&gt;&lt;br /&gt;This morning I've realized that although the framework has many PDF writing APIs (like libharu and PDFLib), it has no PDF reading APIs. So, I've integrated poppler (already used by de Concept Client). Now you can convert PDFs to images or extract text.&lt;br /&gt;&lt;br /&gt;The APIs are pretty basic:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import standard.lib.poppler&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import &lt;/span&gt;standard.C.io&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;class &lt;/span&gt;Main {&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);"&gt;function &lt;/span&gt;Main() {&lt;br /&gt;                     &lt;span style="font-weight: bold;"&gt;var pdf=PDFLoadBuffer(ReadFile("test.pdf"), "", var err);&lt;/span&gt;&lt;br /&gt;                     &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;pdf)&lt;/span&gt; {&lt;br /&gt;                                 &lt;span style="color: rgb(51, 51, 255);"&gt;var &lt;/span&gt;pages=&lt;span style="font-weight: bold;"&gt;PDFPageCount(pdf)&lt;/span&gt;;&lt;br /&gt;                                 &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;"Document has $pages pages\n"&lt;/span&gt;;&lt;br /&gt;                                 &lt;span style="color: rgb(51, 51, 255);"&gt;for &lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;var &lt;/span&gt;i=0;i&amp;lt;pages;i++) {&lt;br /&gt;                                             &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;"Page ${i+1}:\n"&lt;/span&gt;;&lt;br /&gt;                                             &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"=============="&lt;/span&gt;;&lt;br /&gt;                                             &lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;// extract the text&lt;/span&gt;&lt;br /&gt;                                             &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;PDFPageText(pdf, i)&lt;/span&gt;;&lt;br /&gt;                                             &lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;// extract page as an image&lt;/span&gt;&lt;br /&gt;                                             &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;PDFPageImage(pdf, i, &lt;span style="color: rgb(153, 0, 0);"&gt;"page_$i.png"&lt;/span&gt;);&lt;br /&gt;                                             &lt;span style="color: rgb(51, 51, 255);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;"=============="&lt;/span&gt;;&lt;br /&gt;                                  }&lt;br /&gt;                   &lt;span style="color: rgb(0, 153, 0);"&gt;               // Don't forget to close !&lt;/span&gt;&lt;br /&gt;                                 &lt;span style="font-weight: bold;"&gt;PDFClose(pdf);&lt;/span&gt;&lt;br /&gt;                      }&lt;br /&gt;          }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;(sorry for the indentation, blogspot didn't handle it very well)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-596397520067821140?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/596397520067821140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=596397520067821140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/596397520067821140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/596397520067821140'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/07/ocr-in-concept-framework.html' title='OCR in Concept Framework'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3587754983341500704</id><published>2010-07-08T14:18:00.002+03:00</published><updated>2010-07-08T14:22:28.965+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='UTF8'/><category scheme='http://www.blogger.com/atom/ns#' term='MetaObjects'/><title type='text'>UTF8 string functions and MetaObjects for Gyro</title><content type='html'>UTF8 functions like UTF8Length are now available in standard.lib.str.&lt;br /&gt;&lt;br /&gt;Also, Gyro generates now Meta Object interface for each entity. This enables the developer to "populate" only the needed properties for an object instead of reading the whole object. This is useful in http:// applications, minimizing the database traffic.&lt;br /&gt;&lt;br /&gt;I'm currently working on the new RadGs website, hope to have it online soon !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3587754983341500704?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3587754983341500704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3587754983341500704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3587754983341500704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3587754983341500704'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/07/utf8-string-functions-and-metaobjects.html' title='UTF8 string functions and MetaObjects for Gyro'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7816827351449570354</id><published>2010-06-02T22:33:00.003+03:00</published><updated>2010-06-02T22:40:25.546+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Markers'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>Marker functions for Gyro Apps</title><content type='html'>GyroGears applications have now markers. A marked object will stand out in lists or views, by having different background color, a marker image or text, or a progress bar (indicating for example the progress status for a given task).&lt;br /&gt;&lt;br /&gt;Here are some screen captures:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazOq3M1fI/AAAAAAAAAIs/Zto_d_EvDWE/s1600/scr2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 394px; height: 361px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazOq3M1fI/AAAAAAAAAIs/Zto_d_EvDWE/s400/scr2.png" alt="" id="BLOGGER_PHOTO_ID_5478263061348144626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazPIfsuyI/AAAAAAAAAI0/NAAbnR2kAr4/s1600/scr3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 360px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazPIfsuyI/AAAAAAAAAI0/NAAbnR2kAr4/s400/scr3.png" alt="" id="BLOGGER_PHOTO_ID_5478263069302635298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazOYkNeSI/AAAAAAAAAIk/1PvSD2Mfylo/s1600/scr1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 349px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazOYkNeSI/AAAAAAAAAIk/1PvSD2Mfylo/s400/scr1.png" alt="" id="BLOGGER_PHOTO_ID_5478263056436656418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You just have to write a marker function that will return the marker value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7816827351449570354?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7816827351449570354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7816827351449570354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7816827351449570354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7816827351449570354'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/06/marker-functions-for-gyro-apps.html' title='Marker functions for Gyro Apps'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/TAazOq3M1fI/AAAAAAAAAIs/Zto_d_EvDWE/s72-c/scr2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3665237933857973331</id><published>2010-05-31T21:34:00.004+03:00</published><updated>2010-05-31T21:45:38.432+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><title type='text'>Concept Application Server 1.2 is now available!</title><content type='html'>Several security features added:&lt;br /&gt;- MaxInitialIDLE setting in concept.ini that sets the maximum allowed idle time for a client connection BEFORE initializing an application&lt;br /&gt;- Keep Alive packets to check if client is on-line&lt;br /&gt;- New Concept Update Service&lt;br /&gt;&lt;br /&gt;New properties for GUI objects, updated with GTK 2.20.&lt;br /&gt;New client dialogs, like this one:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TAQDiG3apyI/AAAAAAAAAIc/a3gpDW7M0Zk/s1600/c12.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 503px; height: 157px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TAQDiG3apyI/AAAAAAAAAIc/a3gpDW7M0Zk/s400/c12.png" alt="" id="BLOGGER_PHOTO_ID_5477506931282847522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3665237933857973331?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3665237933857973331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3665237933857973331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3665237933857973331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3665237933857973331'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/05/concept-application-server-12-is-now.html' title='Concept Application Server 1.2 is now available!'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/TAQDiG3apyI/AAAAAAAAAIc/a3gpDW7M0Zk/s72-c/c12.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2871582292007573929</id><published>2010-04-30T11:03:00.002+03:00</published><updated>2010-04-30T11:08:53.675+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>More optimizations</title><content type='html'>I've optimized the memory fragmentation (far less memory allocations/deallocations in Concept Core). GyroGears now generates smart update functions reducing the amount of data sent to the database server (reducing the load in high-concurrency). These are the final steps to the first release. Also, a bug in Concept Client regarding a desynchronization between the server and the client treeview reference was fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2871582292007573929?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2871582292007573929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2871582292007573929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2871582292007573929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2871582292007573929'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/more-optimizations.html' title='More optimizations'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-415559506244023583</id><published>2010-04-21T20:48:00.004+03:00</published><updated>2010-04-21T21:02:04.153+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='IM'/><title type='text'>Purple supported in Concept</title><content type='html'>I've just finished testing the basic functionality for libpurlpe (the IM library behind &lt;a href="http://www.pidgin.im/"&gt;Pidgin&lt;/a&gt;). It now has a wrapper in the standard Concept Application Server distribution. It's a nice library supporting most common IM protocols like AIM, Yahoo, MSN, ICQ, IRC, MySpaceIM and many more. Also, lots of custom plug-ins available on the web, like &lt;a href="http://code.google.com/p/microblog-purple/"&gt;microblog&lt;/a&gt;. It has a really complex interface with almost 0 documentation, but after spending almost 3 days I've managed to write a basic wrapper for it.&lt;br /&gt;&lt;br /&gt;So, just include BasicPurpleIO.con in your project, and you can work with something like this:&lt;br /&gt;&lt;br /&gt;       P=new BasicPurpleIO();&lt;br /&gt;       echo P.Protocols;&lt;br /&gt;       P.OnSignedOn=OnSignedOn;&lt;br /&gt;       P.OnMessage=OnMessage;&lt;br /&gt;       P.OnFileTransfer=OnFileTransfer;&lt;br /&gt;       P.OnFinishTransfer=OnFinishTransfer;&lt;br /&gt;       P.Login("prpl-yahoo", "your_id", "your_password");&lt;br /&gt;       P.Go();&lt;br /&gt;&lt;br /&gt;the Protocols property will list all the supported properties, anything else is really straightforward. See the Samples/Net directory for an working example (test-IM.con).&lt;br /&gt;&lt;br /&gt;On Debian, there is a catch. You must run it with a LD_PRELOAD option (not really sure why, but I've seen the same problem in Python). For example, if your script is called test-IM.con, you should run it:&lt;br /&gt;&lt;div style="text-align: center;"&gt;$ &lt;span style="font-weight: bold;"&gt;LD_PRELOAD=/usr/lib/libpurple.so conceptcli test-IM.con&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;I hope to solve this problem soon (or at least somebody does).&lt;br /&gt;&lt;br /&gt;You just have to write a pretty colors user interface, and you'll have your own IM client.&lt;br /&gt;&lt;br /&gt;By the way, while writing the wrapper, I've noticed some APIs that could be used to write software to identify your invisible buddies on Yahoo.  Did you noticed the number of users of scanner websites? Now multiply with 0.1c ... One more reason to learn Concept.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-415559506244023583?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/415559506244023583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=415559506244023583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/415559506244023583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/415559506244023583'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/purple-supported-in-concept.html' title='Purple supported in Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3999861319207985613</id><published>2010-04-18T22:17:00.002+03:00</published><updated>2010-04-18T22:32:54.957+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared memory'/><title type='text'>CAS and GyroGears stress-test</title><content type='html'>I've tested at &lt;a href="http://www.rackspacecloud.com"&gt;www.rackspacecloud.com&lt;/a&gt; cheapest 64-bit, Debian Linux virtual server with &lt;span style="font-weight: bold;"&gt;256 MB of memory&lt;/span&gt; (1.5c/hour) with the new Concept Application Server running a real-world medium CRM application generated by GyroGears used by telephony-services reseller, application developed by a friend (a non-programmer). I've managed to squeeze about &lt;span style="font-weight: bold;"&gt;75 connection&lt;/span&gt; with the server still standing up. I wanted &lt;span style="font-weight: bold;"&gt;to go for 100&lt;/span&gt;, but I had no memory on my desktop to open client connections to the server and I was to lazy to go for the laptop. I believe that it could support 100 simultaneous connections. Keep in mind that the test was made on a 64-bit server with minimum amount of RAM. Using a 64-bit system will cause a significant increase in memory usage (about 20%). I'm sure that on a 32-bit server, 100 CRM instances will easily be supported.&lt;br /&gt;In conclusion, I could say that concept:// application have now no significant disadvantages to http://.  Peak memory usage was the last major one, but now it's a clear advantage. Peak-memory-usage for server-side processing is incredibly low due its shared-memory pool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3999861319207985613?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3999861319207985613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3999861319207985613' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3999861319207985613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3999861319207985613'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/cas-and-gyrogears-stress-test.html' title='CAS and GyroGears stress-test'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3062095948136104556</id><published>2010-04-13T09:28:00.005+03:00</published><updated>2010-04-13T09:51:35.859+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='play'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>Keep playing</title><content type='html'>I'm switching my posts to English. I've debugged a lot, especially the compiler and parse. Some crashes related to unclosed arrays expressions, eg: [1,2; (missing ']') that in some particular cases caused crashes in the parser were fixed. In GyroGears I've added two new features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;multi-select when searching that will allow to select multiple items when advanced searching&lt;/li&gt;&lt;li&gt;read-only fields - fields that cannot be edited by the user&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S8QQTIEddbI/AAAAAAAAAIM/iWMzMaoi7A0/s1600/gnro.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S8QQTIEddbI/AAAAAAAAAIM/iWMzMaoi7A0/s400/gnro.png" alt="" id="BLOGGER_PHOTO_ID_5459506569049634226" border="0" /&gt;&lt;/a&gt;I'm often asked why I do Concept Application Server and GyroGears for free, and I'm not sure I have an answer for that. Apparently is a non-purpose action... but not for me. Is fun, and I'm playing !&lt;br /&gt;I was just thinking the other day about what "being a man" is supposed to be. Is maybe a standard imposed by women in order to gain something in return ? Maybe the "being a boy" is incompatible with the woman's essence.&lt;br /&gt;Playing, seen as activities with no monetary value:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;whistling just for fun&lt;br /&gt;&lt;/li&gt;&lt;li&gt;climbing a mountain or even a hill just for the view&lt;/li&gt;&lt;li&gt;coding software just for fun&lt;/li&gt;&lt;li&gt;walking, running just for the fun of it&lt;/li&gt;&lt;li&gt;singing with no audience&lt;/li&gt;&lt;li&gt;playing hide and seek with your cat&lt;/li&gt;&lt;li&gt;being happy when you're broke&lt;/li&gt;&lt;li&gt;playing with toy-boats in the bathtub&lt;/li&gt;&lt;li&gt;dreaming&lt;/li&gt;&lt;/ul&gt;Manhood as defined by average woman:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;being a provider&lt;/li&gt;&lt;li&gt;worrying&lt;/li&gt;&lt;li&gt;stop dreaming, stop playing&lt;/li&gt;&lt;/ul&gt;So, let's play!&lt;br /&gt;Today I'm getting older - I'm &lt;span class="texhtml"&gt;3&lt;sup style="font-style: italic;"&gt;3&lt;/sup&gt;&lt;/span&gt; (3 x 3 x 3 = 27 not yet 33 !) years now, and I continue playing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3062095948136104556?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3062095948136104556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3062095948136104556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3062095948136104556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3062095948136104556'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/keep-playing.html' title='Keep playing'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S8QQTIEddbI/AAAAAAAAAIM/iWMzMaoi7A0/s72-c/gnro.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6964190633526799523</id><published>2010-04-09T21:04:00.006+03:00</published><updated>2010-04-09T21:17:17.777+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='CIDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared memory'/><title type='text'>Reducerea finala - 40% + cele anterioare = ~60%</title><content type='html'>... am reusit sa reduc cu inca 40% consumul de memorie, in total in ultimele zece zile reducand cu 60% ... eu personal sunt impresionat, dar asta e doar pentru ca sunt prea plin de mine. Am mutat vectorii de relocare (numiti in termeni populari "niste chestii") in zona de memorie partajata obtinand o economie serioasa, suprinzatoare si pentru mine de altfel. Fata de acum un an, memoria folosita de CAS a scazut cu 90%... nici macar un octet nu mai ramane nefolosit. O alta varianta de a reduce, ar fi un procesor care sa stie sa lucreze pe 24 de biti, pentru ca de multe ori, 16 biti e prea putin iar 32 prea mult.&lt;br /&gt;&lt;br /&gt;Oricum, sa-ti arat modelul shared - e colorat.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S79uEi4_hfI/AAAAAAAAAIE/l1pFttzfHqA/s1600/shared.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 282px; height: 400px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S79uEi4_hfI/AAAAAAAAAIE/l1pFttzfHqA/s400/shared.png" alt="" id="BLOGGER_PHOTO_ID_5458202297760712178" border="0" /&gt;&lt;/a&gt;Toata zona de "code" ramane incarca o singura data indiferent de numarul de utilizatori, consumul de memorie fiind redus asa cu peste 67%.&lt;br /&gt;&lt;br /&gt;Cateva aplicatii si consumul lor actual:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Concept IDE - 7.8 MB ram/user pe server&lt;/li&gt;&lt;li&gt;GyroGears - 7.5 MB ram/user pe server&lt;/li&gt;&lt;li&gt;Concept WKB (web browser-ul) - 2.8 MB ram/user pe server&lt;/li&gt;&lt;li&gt;HR Companion 2.4 - 18 MB ram/user pe server (are spre 1 milion de linii de cod)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6964190633526799523?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6964190633526799523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6964190633526799523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6964190633526799523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6964190633526799523'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/reducerea-finala-40-cele-anterioare-60.html' title='Reducerea finala - 40% + cele anterioare = ~60%'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S79uEi4_hfI/AAAAAAAAAIE/l1pFttzfHqA/s72-c/shared.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2100918826628864720</id><published>2010-04-05T23:51:00.002+03:00</published><updated>2010-04-05T23:53:32.400+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared memory'/><title type='text'>Redus cu inca 11.5%</title><content type='html'>Am redus cu inca 11.5% ... nu e chiar "inca 15%" dar e destul de aproape ... Nu stiu de unde mai pot reduce dar probabil ca-mi va veni o idee.&lt;br /&gt;&lt;br /&gt;Concept IDE consuma acum 8.6 MB ram/user pe server ... Concept ruleaza ! (varianta romaneasca la "Concept rules !")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2100918826628864720?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2100918826628864720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2100918826628864720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2100918826628864720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2100918826628864720'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/redus-cu-inca-115.html' title='Redus cu inca 11.5%'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-642763193441190989</id><published>2010-04-01T22:31:00.006+03:00</published><updated>2010-04-06T13:54:14.189+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Cu 11.3% mai multi useri</title><content type='html'>Am redus consumul de memorie cu inca 11.3% ... asta inseamna ca pe resursele hardware pe care puteam tine 100 de useri, ducem acum 111. O reducere de memorie de inca 15% m-ar multumi pentru moment, dar nu am nici cea mai mica idee de unde.&lt;br /&gt;&lt;br /&gt;Ca sa-ti faci o idee, Concept IDE consuma acum pe server (fara proiect deschis) 9.5 MB RAM.&lt;br /&gt;&lt;br /&gt;Am testat foarte mult cu Memory Validator - o unealta excelenta - din toate uneltele de memory analysis pe care le-am testat, acceasta mi s-a parut cea mai utila. Probleme mari nu au fost gasite (eu fiind mandru de asta).&lt;br /&gt;&lt;br /&gt;Am filtrat si warning-urile (fiind excesiv de multe). Acum, pe o aplicatie de test pe care se generau aproximativ 5800 de warning-uri, se genereaza acum 235 relevante. Iti dai seama ca la 5800 nu le-ar fi luat nimeni in serios ...&lt;br /&gt;&lt;br /&gt;Pe GyroGears - multe lucruri noi si mult debugging - au fost corectate niste bug-uri legate de butonul ce apare pe formurile child pentru referire la parinti (daca se apasa pe acel buton, din copil, se mergea pe parinte si se faceau operatiuni de add/modify pe relatii se ajungea la invalidarea tranzactiei).&lt;br /&gt;&lt;br /&gt;S-au adaugat membri "read-only". Acum orice membru poate fi definit ca read-only, indiferent de tipul lor.&lt;br /&gt;&lt;br /&gt;Am inceput lucrul la noul site (sper sa si reusesc sa-l si termin).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-642763193441190989?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/642763193441190989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=642763193441190989' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/642763193441190989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/642763193441190989'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/04/cu-113-mai-multi-useri.html' title='Cu 11.3% mai multi useri'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-900374850984295732</id><published>2010-02-07T16:51:00.003+02:00</published><updated>2010-02-07T17:12:06.308+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOAD'/><category scheme='http://www.blogger.com/atom/ns#' term='HC'/><category scheme='http://www.blogger.com/atom/ns#' term='Zilog'/><title type='text'>LOAD ""</title><content type='html'>Cautam prin sertare astazi si am dat de cablul improvizat ce-l foloseam cu Data (primul meu computer) ... un HC91. Intr-o pauza de testare, ma tot gandesc la un Dizzy... cred ca primul calculator e poate ca primul sarut, nu-l uiti ... cred ca pot spune ca as lucra cu drag pe HC, daca nu ar exista o lume ce se invarte din ce in ce mai repede, ce nu mi-ar cere din ce in ce mai mult. Daca ai avut placerea de a cunoste procesoarele Zilog, nu crezi ca au poate un fel de romantism ... ce te atrage ... te fac sa crezi ca orice este posibil. Ma tot gandeam la reclama cu "Hi, I'm a Mac, and I'm a PC" ... as adauga si "I am a Zilog".  Daca Mac e un OM cool, PC un alt OM ce stie sa faca de toate dar nu are stil, hc-ul ar putea fi ... un calculator sau poate &lt;a href="http://en.wikipedia.org/wiki/Dizzy_Prince_of_the_Yolkfolk"&gt;Dizzy&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cu riscul de a parea ca batranii ce zic ca era mai bine pe vremea lui ... imi amintesc ca pe HC credeam ca orice este posibil. Nu aveam casetofon la el ... am luat casetofonul maica-mii si am legat la un jack acea mufa cu 5 pini a hc-ului ... apoi am legat si microfonul ca sa pot si salva. De ziua mea, prin clasa a 6-a cred, am primit un floppy double-density (de 720k) ... ce nu se potrivea ... m-am chinuit 2-3 luni pana am reusit sa-l leg la interfata lui, iar asta ma ajuta sa visez, sa cred ca poate face orice. Si totusi, continui sa cred asta Era revista Tehnium, o cumpara tatal unui prieten foarte bun, in care gaseam listing-uri de programe, pe care le copiam ca prostu', doar pentru rezultat. Si era mereu acel RANDOMIZE USR ... spaima mea cand ma uitam pe codul altuia.&lt;br /&gt;&lt;br /&gt;PS - Update Concept&amp;amp;GyroGears: pe Gyro merg grupurile (foarte beta, dar merg). Mult debugging, o sa revin cu un update curand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-900374850984295732?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/900374850984295732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=900374850984295732' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/900374850984295732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/900374850984295732'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/02/load.html' title='LOAD &quot;&quot;'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7394027957069189757</id><published>2010-01-19T13:16:00.003+02:00</published><updated>2010-01-19T13:20:16.504+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='video capture'/><category scheme='http://www.blogger.com/atom/ns#' term='chat'/><title type='text'>Concept Video Conference</title><content type='html'>Am adaugat un exemplu nou in distributia de Concept: Concept Video Conference. Este un sistem minimal, demonstrativ pentru chat (text+audio+video). Nu foloseste database, useri etc ... pur si simplu toti ce-l acceseaza vad pe toata lumea si aud pe toata lumea, iar asta folosind doar sistemul de mesagerie interna Concept.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S1WU73pIGhI/AAAAAAAAAHs/OVZwV32IvMM/s1600-h/openconference.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S1WU73pIGhI/AAAAAAAAAHs/OVZwV32IvMM/s320/openconference.png" alt="" id="BLOGGER_PHOTO_ID_5428408682134641170" border="0" /&gt;&lt;/a&gt;Ca de obicei, totul este cross-platform, aceleasi api-uri indiferent se sistem (prin plug-in-urile OpenCV, portaudio si speex pentru compresie de voce).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7394027957069189757?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7394027957069189757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7394027957069189757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7394027957069189757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7394027957069189757'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/01/concept-video-conference.html' title='Concept Video Conference'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/S1WU73pIGhI/AAAAAAAAAHs/OVZwV32IvMM/s72-c/openconference.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-36520730660341399</id><published>2010-01-12T22:17:00.004+02:00</published><updated>2010-01-12T22:37:24.284+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='speech recognition'/><category scheme='http://www.blogger.com/atom/ns#' term='video capture'/><title type='text'>Șpici ricognișăn</title><content type='html'>Am adaugat feature-uri noi atat in GyroGears cat si in Concept Client.&lt;br /&gt;Incep cu concept client in care am adaugat Julian, o biblioteca extraordinara pentru speech recognition. Este foarte customizabila (dictionarele se configureaza fonetic, ca urmare poate fi folosita perfect si pentru limba romana). Se comporta absolut identic pe Windows si pe Unices (inclusiv OS X). Am inclus un dictionar de test pentru cateva cuvinte.&lt;br /&gt;Screen-urile sunt de pe OS X si Win32.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHT7MweI/AAAAAAAAAHU/sdQQGxCPR1s/s1600-h/dial5osxnoise.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 303px; height: 258px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHT7MweI/AAAAAAAAAHU/sdQQGxCPR1s/s320/dial5osxnoise.png" alt="" id="BLOGGER_PHOTO_ID_5425953669240373730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHFJWWfI/AAAAAAAAAHM/ZUPfq_hzazc/s1600-h/dial5noise.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 305px; height: 301px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHFJWWfI/AAAAAAAAAHM/ZUPfq_hzazc/s320/dial5noise.png" alt="" id="BLOGGER_PHOTO_ID_5425953665273190898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHBvS54I/AAAAAAAAAHE/BfrGYnh1KVA/s1600-h/dial5osx.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 304px; height: 257px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHBvS54I/AAAAAAAAAHE/BfrGYnh1KVA/s320/dial5osx.png" alt="" id="BLOGGER_PHOTO_ID_5425953664358606722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcG_esRLI/AAAAAAAAAG8/aH0_Nc4fbeM/s1600-h/dial5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 305px; height: 301px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcG_esRLI/AAAAAAAAAG8/aH0_Nc4fbeM/s320/dial5.png" alt="" id="BLOGGER_PHOTO_ID_5425953663752094898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Am pronuntat "dial five" corect, si "dia' fie" ... si a recunoscut suprinzator de bine.&lt;br /&gt;&lt;br /&gt;Acum, pe Gyro, am incorporat webcam-ul. Astfel, la tipul de date "picture" exista optiunea "Allow webcam capture" ceea ce va lasa userul sa faca o poza cu webcam-ul direct in aplicatia gyro. Rezultatul arata cam asa:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zc5wY0CJI/AAAAAAAAAHc/j460cvIHPqY/s1600-h/webcam.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zc5wY0CJI/AAAAAAAAAHc/j460cvIHPqY/s320/webcam.png" alt="" id="BLOGGER_PHOTO_ID_5425954535874234514" border="0" /&gt;&lt;/a&gt;Butonul incercuit e cel de "get from webcam", moment in care ni se deschide:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zc6KSft_I/AAAAAAAAAHk/Uz_Ow8ByhEk/s1600-h/cam2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 249px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zc6KSft_I/AAAAAAAAAHk/Uz_Ow8ByhEk/s320/cam2.png" alt="" id="BLOGGER_PHOTO_ID_5425954542827059186" border="0" /&gt;&lt;/a&gt;... aceasta fereastra. Am pozat monitorul .... dupa ce i-am dat ok, a intrat in baza de date, totul fiind generat 100% automat (fara nicio linie de cod).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-36520730660341399?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/36520730660341399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=36520730660341399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/36520730660341399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/36520730660341399'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/01/spici-ricognisan.html' title='Șpici ricognișăn'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0zcHT7MweI/AAAAAAAAAHU/sdQQGxCPR1s/s72-c/dial5osxnoise.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4910241908509743687</id><published>2010-01-10T13:56:00.003+02:00</published><updated>2010-01-10T14:01:12.825+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webcam'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>OpenCV embedded in Concept Client</title><content type='html'>Am reusit sa integrez OpenCV in Concept Client, avand acum acces pe aceiasi interfata (cross-platform) la webcam. Odata cu accesul la camera video vine si un set de functii foarte interesante, de genul motion detector sau object detector. Cel din urma este chiar interesant, pentru ca pe baza unor xml-uri de configurare, poate detecta fetele umane, corpuri, etc.. API-urile OpenCV sunt foarte comode, iar eu am incercat sa le simplific si mai mult. Clientul acum este capabil sa inregistreze si video direct de pe webcam sau sa faca streaming.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0nBQxQlL8I/AAAAAAAAAG0/RSv5L3QL8VQ/s1600-h/printscreen.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 154px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0nBQxQlL8I/AAAAAAAAAG0/RSv5L3QL8VQ/s320/printscreen.png" alt="" id="BLOGGER_PHOTO_ID_5425079719989424066" border="0" /&gt;&lt;/a&gt;... totul in realtime !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4910241908509743687?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4910241908509743687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4910241908509743687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4910241908509743687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4910241908509743687'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/01/opencv-embedded-in-concept-client.html' title='OpenCV embedded in Concept Client'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0nBQxQlL8I/AAAAAAAAAG0/RSv5L3QL8VQ/s72-c/printscreen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5899825666871023916</id><published>2010-01-06T21:20:00.006+02:00</published><updated>2010-01-06T22:04:36.956+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drag and drop'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='jucarii'/><category scheme='http://www.blogger.com/atom/ns#' term='shaped windows'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshot'/><title type='text'>Jucarii noi</title><content type='html'>Acum, daca tot am implementat tot ce mi-a trecut prin cap, am inceput sa ma joc. Prima problema de care m-am lovit a fost "shaped window" (de fapt, in Concept poate fi shaped-anything). Problema era ca trebuia setat in bitmap in format xpm. Foarte frumos, doar ca pe windows e relativ dificil sa gasesti unelte cu care sa faci xpm-uri. Atunci, am zis asa: setezi un png cu transparenta ca mask. Unde ai bit transparent, nu vei avea "fereastra" iar unde ai orice altceva, vei avea canvas.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0TjJ4X2kbI/AAAAAAAAAGc/Akt1PDlfGQw/s1600-h/shaped.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0TjJ4X2kbI/AAAAAAAAAGc/Akt1PDlfGQw/s320/shaped.png" alt="" id="BLOGGER_PHOTO_ID_5423709610151678386" border="0" /&gt;&lt;/a&gt;Dupa cum se vede, este suficient sa setez o imagine ca mask, pt o fereastra rotunda. Atentie doar la ferestrele "principale" ce au obligatoriu titlebar (cel putin pe Win32). Solutia e sa creati o fereastra "copil" (transistient for).  Aici, m-am jucat putin, si am setat o imagine ce era si vizibila, ca mask. O problema a fost suprapunerea imaginii peste fereastra (pentru ca apare o diferenta data de border-ul ferestrei. Ca solutie, am pus un scrollbar in spate, si m-am jucat doar din pozitia pe verticala, asa cum vezi aici:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0TkFXF10eI/AAAAAAAAAGk/7GyPwNyYomk/s1600-h/shaped2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 227px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/S0TkFXF10eI/AAAAAAAAAGk/7GyPwNyYomk/s320/shaped2.png" alt="" id="BLOGGER_PHOTO_ID_5423710632009912802" border="0" /&gt;&lt;/a&gt;E un pic de munca de trial and error potrivirea lor, dar merita in final, mai ales ca volumul de munca este simtitor mai mic decat pe orice alt framework.&lt;br /&gt;&lt;br /&gt;Tot la capitolul joaca, sunt 2 noi feature-uri: Metoda Screenshot pentru controale si proprietatea DragIcon ce acum accepta orice, nu numai obiecte de tip RImage.&lt;br /&gt;&lt;br /&gt;Astfel, pentru un buton, putem spune WriteFile(CApplication::Screenshot(button1), "button1.png") rezultand fisierul button1.png pe SERVER cu "fotografia" controlului, asa cum se vede pe client, cu skin-ul aplicat.&lt;br /&gt;&lt;br /&gt;DragIcon-ul poate fi setat chiar cu controlul:&lt;br /&gt;button1.DragIcon=button1;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0Tli-VWxZI/AAAAAAAAAGs/eztUnCg7kc8/s1600-h/dnd.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 237px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0Tli-VWxZI/AAAAAAAAAGs/eztUnCg7kc8/s320/dnd.png" alt="" id="BLOGGER_PHOTO_ID_5423712240271803794" border="0" /&gt;&lt;/a&gt;Nu se vede cursorul mouse-ului in shot, dar e suficient sa-ti faci o idee cum am luat butonul de pe fereastra si i-am facut drag in afara ferestrei.&lt;br /&gt;&lt;br /&gt;Observatie: Shaped-window nu este functional pe Mac OS X.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5899825666871023916?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5899825666871023916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5899825666871023916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5899825666871023916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5899825666871023916'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/01/jucarii-noi.html' title='Jucarii noi'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/S0TjJ4X2kbI/AAAAAAAAAGc/Akt1PDlfGQw/s72-c/shaped.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-9161338502453362397</id><published>2010-01-02T12:23:00.005+02:00</published><updated>2010-01-02T12:29:22.195+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='neomogene'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='relatii'/><title type='text'>Relatii neomogene</title><content type='html'>In sfarsit am reusit sa termin ceva ce-mi doream de foarte mult timp: relatii neomogene. Astfel, putem aveam o relatie intre o entitate si N alte entitati folosind acelasi membru (randate in acelasi view), fara ca cele N entitati sa aiba elemente comune.&lt;br /&gt;&lt;br /&gt;Am atasat un screenshot in care avem o proprietate Media ce accepta Video sau Imagini, 2 entitati total diferite. In primul screenshot avem interfata de definire din Gyro:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sz8fL9jzKDI/AAAAAAAAAGM/8A81_hilKng/s1600-h/gyromixed2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 259px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sz8fL9jzKDI/AAAAAAAAAGM/8A81_hilKng/s320/gyromixed2.png" alt="" id="BLOGGER_PHOTO_ID_5422086766741104690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Iar rezultatul arata cam asa:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sz8fUIByxOI/AAAAAAAAAGU/CJQvlol6WH4/s1600-h/mixedresult.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 66px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sz8fUIByxOI/AAAAAAAAAGU/CJQvlol6WH4/s320/mixedresult.png" alt="" id="BLOGGER_PHOTO_ID_5422086906990216418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Relatiile pot fi de tip many sau de tip one ("nomenclator", respectiv "exclusive"). In continuare, totul se poate face si prin drag and drop (view-ul stiind singur ce poate accepta si ce nu).&lt;br /&gt;&lt;br /&gt;Un elemente cheie aici este posibilitate ordonarii entitatilor in view. Daca bifam "Reorderable" vom putea aseza elementele in view in ce ordine dorim. Ordonarea inca n-o putem face prin drag and drop (trebuie dat click drapta si Up sau Down).&lt;br /&gt;&lt;br /&gt;Cu asta inchei sesiunea de lucru intensiv de sarbatori, sperand ca am reusit sa intaresc platforma.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-9161338502453362397?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/9161338502453362397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=9161338502453362397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/9161338502453362397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/9161338502453362397'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2010/01/relatii-neomogene.html' title='Relatii neomogene'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sz8fL9jzKDI/AAAAAAAAAGM/8A81_hilKng/s72-c/gyromixed2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3400367197716303189</id><published>2009-12-28T03:49:00.003+02:00</published><updated>2009-12-28T03:58:28.041+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>Configurarea obiectelor GUI in Runtime</title><content type='html'>Terminand mai tot ce mi-am propus pentru zilele astea, mi-a trecut ceva prin cap: ce-ar fi daca am lasa un utilizator final al unei aplicatii Concept sa-si seteze anumite lucruri prin aplicatie, cum ar fi culoarea butoanelor sau poate chiar sa ascunda din campuri. Acum, totul e customizabil, asadar nu va putea edita absolut tot ce vrea el, ci va edita doar ce vrem noi. Ar trebui sa fie comod sa poata edita GUI-ul unei aplicatii Gyro in run-time ... ca pe wikipedia. Pentru asta am adaugat un control nou (de fapt l-am finalizat fiind un proiect abandonat acum cativa ani) - RPropertiesBox ce ne permite sa editam proprietatile unui obiect. Mai mult, am facut obiectul sa-si prezinte singur proprietatile folosind CApplication astfel: CApplication::DescribeObject(button1) ... iar asta ne returneaza toate informatiile despre proprietatile suportate. Apoi, folosind CApplication::ModifyObject(button1, "label") putem sa modificam proprietatile in RUN-TIME! Bun la debugging, bun la customizare. Atasez screen-ul de test.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzgQhmRHAYI/AAAAAAAAAF8/yAixdMP8RiY/s1600-h/propedit.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 238px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzgQhmRHAYI/AAAAAAAAAF8/yAixdMP8RiY/s320/propedit.png" alt="" id="BLOGGER_PHOTO_ID_5420100320934429058" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3400367197716303189?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3400367197716303189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3400367197716303189' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3400367197716303189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3400367197716303189'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/12/configurarea-obiectelor-gui-in-runtime.html' title='Configurarea obiectelor GUI in Runtime'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzgQhmRHAYI/AAAAAAAAAF8/yAixdMP8RiY/s72-c/propedit.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8545092620896089121</id><published>2009-12-26T01:10:00.007+02:00</published><updated>2009-12-28T22:49:03.177+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfdec'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Suport flash fara Adobe pentru Concept</title><content type='html'>Am reusit sa compilez Swfdec pe win32, cu toate ca inca mai am ceva probleme legate de sunet. Acum se poate include un swf foarte usor intr-o aplicatie Concept.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzVHPPGoJwI/AAAAAAAAAF0/lf57-w9h6oY/s1600-h/cswf.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzVHPPGoJwI/AAAAAAAAAF0/lf57-w9h6oY/s320/cswf.png" alt="" id="BLOGGER_PHOTO_ID_5419316053688198914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si acelasi lucru pe Mac:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SzkZeA4SsjI/AAAAAAAAAGE/AIE2T5o1Cds/s1600-h/swfosx.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SzkZeA4SsjI/AAAAAAAAAGE/AIE2T5o1Cds/s320/swfosx.png" alt="" id="BLOGGER_PHOTO_ID_5420391629939978802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Am testat cateva jocuri, cateva filmulete. Nu merg chiar toate dar oricum, pentru cei ce doresc suport Flash complet, exista ActiveX-ul de la Adobe. Va functiona din pacate doar pe windows.&lt;br /&gt;&lt;br /&gt;Inca o noapte de Craciun cu Concept !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8545092620896089121?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8545092620896089121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8545092620896089121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8545092620896089121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8545092620896089121'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/12/suport-flash-fara-adobe-pentru-cocnept.html' title='Suport flash fara Adobe pentru Concept'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzVHPPGoJwI/AAAAAAAAAF0/lf57-w9h6oY/s72-c/cswf.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3043510924954852054</id><published>2009-12-24T00:38:00.007+02:00</published><updated>2009-12-24T00:58:23.195+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='Cluster'/><title type='text'>Uptime 99.999% cu Concept Cluster</title><content type='html'>Am pus in kit-ul Concept Server un Load Balancer(CLB=Concept Load Balancer). E fara dependinte, astfel incat sa poate fi pus pe orice masina (ce nu trebuie sa aiba si Concept instalat). Consuma 24k ram/user conectat. Nucleul foloseste un weighted round-robin, asigurand incarcare simetrica si proportionala cu capacitatea serverelor din cluster. Practic fiecare server poate avea alt sistem de operare: putem defini un cluster cu un server windows, unul bsd si unul linux fara probleme, fara ca userul sa observe vreo diferenta. Pe langa asta, CLB este capabil sa se lege la noi servere fara shut down si poate detecta serverele offline (putand de exemplu, peste noapte sa inchid o parte din servere). E frumos ca dupa screenshot-urile acelea frumoase de pe OS X sa trantesc si o consola.&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzKgajoNaHI/AAAAAAAAAFs/G22inn97rCk/s1600-h/clb4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 315px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzKgajoNaHI/AAAAAAAAAFs/G22inn97rCk/s320/clb4.png" alt="" id="BLOGGER_PHOTO_ID_5418569679781062770" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;Sa-ti explic scenariul:&lt;br /&gt;Avem initial 4 servere, din care 1 nu functioneaza (cel cu FAIL). Deschidem 16 instante de Concept IDE (sau orice alta aplicatie Concept). Dupa ce deschidem cateva, anuntam ca vrem sa scoatem unul din servere (cel marcat cu REMOVED). Acesta nu va fi inchis automat ci nu va mai primi conexiuni. Va putea fi scos din sistem atunci cand nu mai are nicio conexiune activa, astfel incat sa nu deranjam niciun user. In momentul in care conexiunile ii ajung la 0, atunci va pleca din cluster. Mecanismul este foarte simplu, pentru ca fiabilitate este invers proportionala cu complexitatea.&lt;br /&gt;Mai mult, load balancer-urile pot fi legate unul de altul, ca si cum ar fi servere (ele din exterior vazandu-se ca un server Concept).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3043510924954852054?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3043510924954852054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3043510924954852054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3043510924954852054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3043510924954852054'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/12/uptime-99999-cu-concept-cluster.html' title='Uptime 99.999% cu Concept Cluster'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SzKgajoNaHI/AAAAAAAAAFs/G22inn97rCk/s72-c/clb4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7434182290256252909</id><published>2009-12-21T11:33:00.005+02:00</published><updated>2009-12-21T11:51:54.122+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS X'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared memory'/><title type='text'>Concept pe OS X  Leopard</title><content type='html'>Dupa o saptamana in care m-am chinuit sa inteleg OS X-ul, am reusit sa fac distributia Concept Client 1.1 pentru Mac OS X 10.4 sau mai mare. Am facut-o intr-o masina virtuala 10.5.2 si au testat-o cativa prieteni pe 10.5.7. Mai jos de 10.5.2 nu pot garanta nimic, dar teoretic ar trebui sa mearga pe orice mai mare de 10.4. Serverul inca nu este disponibil pe OS X dar se compileaza foarte usor, pentru cine vrea neaparat. Trebuie doar instalat Xcode si darwinports si modificate flag-urile din makefile-uri din -shared in -dynamiclib. Probabil ca voi face un installer si pentru server, dar nu stiu exact cand se va intampla asta. Daca totusi cineva vrea neaparat, imi poate cere explicit asta si asa as fi mai motivat.&lt;br /&gt;&lt;br /&gt;N-am apucat sa va mai spun cum am redus consumul de memorie cu ... 70% pe server. Asta pentru carcotasii care tot vorbesc de concept:// vs http://. Acum, teoretic sistemul suporta cam acelasi numar de useri simultani. Exista acum un flag: UseSharedMemoryPool in concept.ini. By default, e setat la 1 (true), dar daca va crapa, il puteti pune la 0(false). Atunci cand are valoarea 1, toata zona de cod pentru o aplicatie se incarca intr-o zona de memorie partajata iar pentru fiecare user se vor incarca doar cateva informatii specifice acelei conexiuni (in loc de a incarca si codul pentru fiecare user in parte, cum se intampla cand flag-ul este 0). Asta + multe alte operatiuni au redus consumul de memorie drastic.&lt;br /&gt;&lt;br /&gt;Atasez cateva screenshot-uri de pe OS X:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ESCkHhCI/AAAAAAAAAFE/uggbLMBFBMg/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-48-31.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ESCkHhCI/AAAAAAAAAFE/uggbLMBFBMg/s320/Mac+OS+X+Leopard-2009-12-19-18-48-31.png" alt="" id="BLOGGER_PHOTO_ID_5417623953466688546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ESBJ7UFI/AAAAAAAAAE8/_TMH8jtwfyg/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-46-43.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ESBJ7UFI/AAAAAAAAAE8/_TMH8jtwfyg/s320/Mac+OS+X+Leopard-2009-12-19-18-46-43.png" alt="" id="BLOGGER_PHOTO_ID_5417623953088401490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9EROoawjI/AAAAAAAAAEk/tKe0U5RcxkI/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-39-26.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9EROoawjI/AAAAAAAAAEk/tKe0U5RcxkI/s320/Mac+OS+X+Leopard-2009-12-19-18-39-26.png" alt="" id="BLOGGER_PHOTO_ID_5417623939526083122" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ERwmT7WI/AAAAAAAAAE0/vPf-Dv7_tHc/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-42-47.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ERwmT7WI/AAAAAAAAAE0/vPf-Dv7_tHc/s320/Mac+OS+X+Leopard-2009-12-19-18-42-47.png" alt="" id="BLOGGER_PHOTO_ID_5417623948644052322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ERelvp9I/AAAAAAAAAEs/lixbsuGb3hQ/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-42-06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ERelvp9I/AAAAAAAAAEs/lixbsuGb3hQ/s320/Mac+OS+X+Leopard-2009-12-19-18-42-06.png" alt="" id="BLOGGER_PHOTO_ID_5417623943809837010" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9Eyxwf_VI/AAAAAAAAAFM/Y4z5b8ylLHY/s1600-h/Mac+OS+X+Leopard-2009-12-19-18-54-57.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9Eyxwf_VI/AAAAAAAAAFM/Y4z5b8ylLHY/s320/Mac+OS+X+Leopard-2009-12-19-18-54-57.png" alt="" id="BLOGGER_PHOTO_ID_5417624515890904402" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7434182290256252909?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7434182290256252909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7434182290256252909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7434182290256252909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7434182290256252909'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/12/concept-pe-os-x-leopard.html' title='Concept pe OS X  Leopard'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sy9ESCkHhCI/AAAAAAAAAFE/uggbLMBFBMg/s72-c/Mac+OS+X+Leopard-2009-12-19-18-48-31.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3813271197256559562</id><published>2009-12-14T19:58:00.005+02:00</published><updated>2009-12-14T20:27:53.362+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Concept 1.1 BETA</title><content type='html'>Munca multa in ultimul timp, in special pe partea de testare. S-au rezolvat toate bug-urile raportate pana acum (cu multe nopti nedormite). S-au implementat feature-uri noi precum suportul de Twitter (&lt;a href="http://www.radgs.com/docs/help/Twitter.html"&gt;http://www.radgs.com/docs/help/Twitter.html&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Prin client, limita pentru filerequest a fost ridicata la ... infinit ... Din pacate inca exista limitar pe partea de primire de fisier, dar vor fi eliminate si acestea in curand.&lt;br /&gt;&lt;br /&gt;Ma gandesc sa numesc cateva din persoanele ale caror idei se regasesc in GyroGears sau care au avut o cotributie majora in implementarea feature-urilor.&lt;br /&gt;Dan Vasile - o gramada de bugfix-uri (nici nu mai stiu exact cate). Pe langa asta, a mai avut si multe idei&lt;br /&gt;Doru Ilasi - editarea direct in view-uri. Nu a fost chiar ideea lui, dar m-a convins sa implementez asta in Gyro&lt;br /&gt;Dan Craciun - semnaleaza si gaseste problemele cu UTF-8 pe Windows 7&lt;br /&gt;Robert Shiplett - comentariile rautacioase, dar indreptatite despre o varianta "broken" de Concept strecurata in distributia oficiala. M-am invatat minte sa testez mai atent.&lt;br /&gt;Emil Tereanu si Ruben Sainiuc - m-au scutit de zile intregi de a ma documenta despre ffmpeg si procesarea/conversia video&lt;br /&gt;Vlad Nemes - cel care se uita ce se intampla prin lume si-mi zice si mie astfel incat sa ma ajute sa tin Gyro si Concept "in trend".&lt;br /&gt;&lt;br /&gt;Am inceput sa paricip si pe la geekmeet-uri. Am avut feedback destul de interesant pana acum. Am fost in Cluj, Timisoara si Constanta. Trebuie sa recunosc ca cea mai "exotica" prezentare a fost cea de la &lt;a href="http://blogu.lu/dreamproduction/2009/11/25/geek-meet-9-timisoara/"&gt;Timisoara&lt;/a&gt;, unde cred ca voi merge de fiecare data cand voi avea ocazia. A fost poate prezentarea din care am invatat eu cel mai mult.&lt;br /&gt;&lt;br /&gt;O sa tot amestec subiectele si voi vorbi si despre scrisoarea lui Monty. Circula pe internet un apel de a "salva MySQL"-ul venit chiar din partea creatorului acestuia. Cu riscul de a supara pe cineva voi spune:&lt;br /&gt;- daca acest apel venea de la oricine altcineva, l-as fi sustinut. Atata timp cat vine de la cel care a vandut MySQL-ul, nu pot sa-l sustin. Este oarecum trist sa vinzi un produs iar apoi sa faci lobby pentru "salvarea lui". Nu as vrea sa folosesc cuvinte mai dure.&lt;br /&gt;- din momentul vanzarii catre Sun, cred ca preluarea de catre Oracle putea fi anticipata. InnoDB a fost cumparat cu mult inaintea lui MySQL. Oare ce ar fi putut urma ?&lt;br /&gt;- Oracle incearca sa creeze un monopol. Dar cred ca asta incearca orice companie ce se respecta, iar asta de cand lumea. Politica de monopol, vorbind "la rece", este cea mai sanatoasa pentru "practicant". Cand Monty isi incasa cecul, nu cauta acolo un raspuns afectiv ? Il respect foarte mult pentru ceea ce face si consider ca ar trebui sa se concentreze pe MariaDB lasand politica pentru politicieni. Sunt tare nerabdator sa incerc MariaDB.&lt;br /&gt;Vezi BerkeleyDB, ce este acum tot in proprietatea Oracle... si a pornit tot ca open source.&lt;br /&gt;- InnoDB+, un engine superior InnoDB e closed source! Iar asta este un lucru rau pentru ca ... ? Nu inteleg de ce trebuie sa fie totul open source. Sunt fan al open source-ului dar nu consider ca nu trebuie sa mai existe altceva in afara de open. Iar daca ne uitam cata politica e prin open source ... incep sa cred ca modelul closed e mai "liber".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3813271197256559562?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3813271197256559562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3813271197256559562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3813271197256559562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3813271197256559562'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/12/concept-11-beta.html' title='Concept 1.1 BETA'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1182707146810886092</id><published>2009-11-09T16:38:00.004+02:00</published><updated>2009-11-09T16:46:45.349+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bit'/><title type='text'>Concept Application Server pe 64 de biti !</title><content type='html'>De cateva zile ma chinui cu portarea serverului Concept pe 64 de biti. Totul e aparent simplu, existant o singura problema (majora): sizeof(long) ... nu are rost sa intru in detalii, important e ca in final conversia a reusit, pastrand structura fisierelor executabile identica pe 32 si 64 de biti. Din pacate, pentru multi versiunea de 64 este disponibila doar pe Linux/BSD ... teoretic si pe Windows pentru cine are rabdare sa compileze dupa surse. Voi face eu asta in zilele urmatoare.&lt;br /&gt;Am incercat sa fac totul din precompilare (astfel incat sa fie exact aceleasi surse si pe 32 si pe 64) si sper ca am reusit (am testat doar pe Ubuntu/64 biti pe un server pus la dispozitie de Doru de la Aplix). In rest, modulul de AES a fost modificat dupa descrierea lui Chris Lomont (care are o implementare foarte interesanta a algoritmului) iar cel de RSA al lui Hariyanto Lim, ce se pare ca nu-l mai intretine, a fost modificat de mine.&lt;br /&gt;&lt;br /&gt;Clientul Concept inca nu este disponibil in versiune de 64 de biti, cea de 32 de biti functionand oricum fara probleme. Oricum, il voi porta si pe acesta in curand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1182707146810886092?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1182707146810886092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1182707146810886092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1182707146810886092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1182707146810886092'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/11/concept-application-server-pe-64-de.html' title='Concept Application Server pe 64 de biti !'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1105942963008847607</id><published>2009-11-02T22:51:00.006+02:00</published><updated>2009-11-03T10:22:35.776+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='LOAD'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>No marketing. Just software.</title><content type='html'>In ultimele zile am dormit doar cateva ore incercand (cu succes) sa convertesc clientul Concept de la GTKmm la GTK+. Asta inseamna un pachet simtitor mai mic. Toate componentele s-au rescris, iar in afara de ffmpeg, toate functioneaza perfect. O gramada de bug-uri s-au rezolvat - acum rularea este una curata, cursiva. Pe distributia de windows, s-a facut ugrade-ul la GTK 2.18 ce aduce nou "client-side windows" - o idee interesanta, ce bineinteles ca mi-a dat bataie de capt cu integrarea controalelor dependente de windows; practic se foloseste o singura fereastra nativa (a sistemului de operare) in care GTK-ul si GDK-ul isi deseneaza controalele (spre deosebire de versiunile anterioare, in care fiecare widget GTK avea propriul HWND/XID).&lt;br /&gt;&lt;br /&gt;Zilele astea voi pune si noul site RadGs, orientat catre mai multa informatie.&lt;br /&gt;&lt;br /&gt;Astea fiind spuse, voi trece la un alt subiect - lumea software-ului, acolo unde este ea astazi.&lt;br /&gt;&lt;br /&gt;Am inceput printr-o discutie cu un fost coleg de facultate, unul din categoria putinilor programatori pasionati ramasi si, discutand de Android 2.0, si de bull****-ul de marketing din jurul lui imi spune:&lt;br /&gt;&lt;br /&gt;"De ce .NET e la versiunea 3.5 si Java la 1.6 ?"&lt;br /&gt;&lt;br /&gt;Si ... habar nu am ... totul a pornit de la faptul ca eu vreau sa schimb o versiune a Concept-ului (avand in vedere ca sunt peste 1000 de build-uri).  In final, tot la marketing ajungem.&lt;br /&gt;&lt;br /&gt;Pana si open source-ul a ajuns tot acolo ... marketing. Mai mult, open source-ul vad ca e din ce in ce mai mult asociat cu Linux-ul ... (nu cu Windows-ul, nu cu BSD-ul si nici cu cele N alte sisteme de operare open source).  Cert e ca trebuie sa recunoastem: pentru end-user cel putin, cea mai comoda solutie ramane una proprietary. Ghiceste cineva care ?&lt;br /&gt;&lt;br /&gt;Bun, sa revenim la open source. Eu propun urmatorul model:&lt;br /&gt;&lt;br /&gt;open source = pasiune&lt;br /&gt;pasiune &lt;&gt; bani&lt;br /&gt;&lt;br /&gt;deci open source &lt;&gt; bani ceea ce rezulta intr-un model de business confuz.&lt;br /&gt;&lt;br /&gt;Tot colegul meu, cel "anti-open source" imi zice ca exista open source facut de nebuni pasionati si open source facut ca o alternativa de monetizare a unui produs inferior... si bine zice.&lt;br /&gt;&lt;br /&gt;Acum cateva zile explicam cuiva la LOAD, faptul ca sunt o gramada de afaceri gandite prost din start. Mintea mea de oligofren vede lucrurile asa: X ajuta comunitatea, iar aceasta isi manifesta recunostinta. Cum ? Plantindu-l. Un model simplu, ce a devenit complex, astfel in initierea unei afaceri (si da, includ ai si afacerile bazate pe open source) se are in vedere in primul rand profitul, astfel incat nu ne gandim "Cum ajutam comunitatea ?" ci "Cum maximizam profitul ?" ... oare, sunt asa de rupt de realitate ? Oare nu mai exista pasiune in ceea ce facem ci doar o foame nejustificata de bani ?&lt;br /&gt;Din pacate open source-ul, asa cum il vad eu acum, in directia asta merge. Am vazut proiectele frumoase facute de studenti si nu vreau sa-i includ si pe ei in aceasta categorie. Cred ca ei sunt singurii ce mai au entuziasmul necesar.&lt;br /&gt;In final, open source-ul tinde sa nu aduca mare lucru in plus fata de proprietary ... faptul ca un "client" are sursele nu inseamna mare lucru. Cei ce sunteti programatori, stiti bine asta. Ideea ca preia "open source-ul" si plateste consultanta, iar daca nu e multumit, poate merge la X eu zic ca-i cel putin ipocrita. O sa le spun de fapt solutii "open source proprietary". Cred ca asa ar fi corect.&lt;br /&gt;Imi pare rau sa spun asta, dar in cele mai multe cazuri, open source-ul ajunge sa fie mai scump decat o solutie proprietara, daca clientul nu este atent. Mai mult, facem un pariu ? Sunt convins ca multi "cumparatori" de servicii peste open source, habar nu au ce-i ala open source... in final, open source cred ca ramane doar o strategie de marketing.&lt;br /&gt;&lt;br /&gt;Mai e si tanti de la LOAD...&lt;br /&gt;In sala, era o tanti, probabil lucreaza la o banca... era asa de suprinsa de modelul de business propus de open source ... si intreaba la un moment dat cum se plateste open source-ul si as fi vrut sa-i raspund "se plateste, chiar daca-i free software ... ba chiar se plateste ori de cate ori este nevoie".&lt;br /&gt;&lt;br /&gt;Comentati. Dau 10 lei sau 2 beri primelor 10 comentarii ... in final, se poate si "free as in free beer". Berea sau banii se ridica de la mine, din Constanta. Asa ca va trebui sa suportati drumul pana-n Constanta. De asemenea, berea o voi da intr-un local cu intrare ce costa cel putin 30 de lei ... asta este implementarea gresita de open source. Acum, berile tot le dau.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bohemiandev.blogspot.com/2009/04/make-software-not-money.html"&gt;Make software, not money&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1105942963008847607?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1105942963008847607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1105942963008847607' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1105942963008847607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1105942963008847607'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/11/no-marketing-just-software.html' title='No marketing. Just software.'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4388507421023800118</id><published>2009-10-16T08:51:00.004+03:00</published><updated>2009-10-16T09:05:22.296+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debygging'/><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>Concept - ce mai e nou ?</title><content type='html'>Sunt foarte multe lucruri noi prin Concept si de aici as enumera: suportul webdav, LDAP (prin OpenLDAP) si MAPI(doar pe Win32, in curand si pe non-windows prin OpenMAPI). Intreg framework-ul sau 99% din API-uri au fost publicate, din pacate nu toate functiile sunt documentate (sunt peste 4000 de functii si proprietati, din care sunt explicate in jur de 1000). Cu toate astea majoritatea sunt destul de intuitive iar la restul exista documentatie pe site-ul dezvoltatorilor, pentru ca API-urile au fost pastrate. Paginile de help sunt disponibile aici:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.radgs.com/docs/help/"&gt;http://www.radgs.com/docs/help/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pe de alta parte, suportul pentru controlul webkit a fost imbunatatit - a fost creat evenimentul OnRequest2, eveniment ce nu este disponibil nativ, prin interceptarea request-ului din libsoup. Asta inseamna ca putem emula form-uri, iar informatia din aceastea poate fi interceptata usor. In Gyro s-a facut o gramada de debuging&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a fost gasit un bug de tranzactie ce-mi dadea dureri de cap de ceva timp&lt;/li&gt;&lt;li&gt;suportul pentru WYSIWYG in form-uri a fost finalizat (prin implementarea completa din webkit si cateva artificii javascript folosind nicEdit)&lt;/li&gt;&lt;li&gt;multe alte bug-uri minore prin GyroWeb&lt;/li&gt;&lt;/ul&gt;In rest, lucrez intens la prezentari si documentatii.&lt;br /&gt;O discutie de ieri cu un prieten, mi-a dat o idee de slogan pentru Gyro:&lt;br /&gt;&lt;br /&gt;Esti programator. Stai afara. Folosete GyroGears.&lt;br /&gt;sau&lt;br /&gt;You're a developer. Stay outside. Use GyroGears.&lt;br /&gt;&lt;br /&gt;Zilele acestea as vrea sa-i fac un face lift lui Gyro, pentru ca s-au adunat relativ multe controale si optiuni, ce la ora asta nu mai sunt organizate tocmai optim.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4388507421023800118?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4388507421023800118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4388507421023800118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4388507421023800118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4388507421023800118'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/10/concept-ce-mai-e-nou.html' title='Concept - ce mai e nou ?'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6913369156397259149</id><published>2009-07-16T17:52:00.006+03:00</published><updated>2009-07-16T18:29:39.587+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='eLiberatica'/><title type='text'>Tot mai aproape de 1.0</title><content type='html'>Ne apropiem usor de Concept 1.0 ... am adaugat un feature nou, din pacate disponibil doar pe Windows NT/XP/Vista ... un serviciu de auto-update, astfel incat daca instalezi acum Concept, ar trebui sa fie ultima data cand o faci manual. Nu-ti va cere niciodata sa inchizi aplicatia pentru update ... sta acolo in background, pana poate face update-ul (pana nu ai nicio aplicatie Concept deschisa, iar atunci il face repede), fara ca userul sa isi dea seama ce se intampla. Am avut o discutie pe tema acestor update-uri cu un coleg programator deranjat de faptul ca exista un update la 1-2 zile ... Dar tocmai asta inseamna atentie fata de useri: nu sunt numai bug fix-uri ci sunt si noi feature-uri ...&lt;br /&gt;Un feature nou este suportul de cookies exact ca in browser. Putem acum stoca informatii pe client (relative la host) si le putem accesa in baza unei chei (ex: username) doar de pe host-ul "proprietar".&lt;br /&gt;Acum se compileaza mult mai usor si pe Ubuntu (pentru cei interesati).&lt;br /&gt;&lt;br /&gt;Despre Gyro sunt si mai multe de spus... pe langa mult debugging, sunt si cateva feature-uri noi, de exemplu "show entity as icon", rezultand liste ca in imaginea de mai jos:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sl9BqjOpaDI/AAAAAAAAAEY/xvpNZTh8H9E/s1600-h/thumbs.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sl9BqjOpaDI/AAAAAAAAAEY/xvpNZTh8H9E/s320/thumbs.png" alt="" id="BLOGGER_PHOTO_ID_5359074280861165618" border="0" /&gt;&lt;/a&gt;Thumb-urile pot fi poze sau filme.&lt;br /&gt;&lt;br /&gt;De asemenea, exista flag-uri pentru click/dublu click (de exemplu, daca lucram cu touch screen, vrem sa dam un singur click).&lt;br /&gt;&lt;br /&gt;Un alt element nou este relatia unei entitati cu ea insasi - foarte util in multe situatii.&lt;br /&gt;&lt;br /&gt;Ma bantuie o fantoma ... atunci cand se foloseste "mysql embedded"  in loc de ODBC, uneori, uita savepoint-ul ... nu-mi pot explica ... o sa actualizez mysql-ul din distributie, poate este un bug. Este posibil sa fie oare un bug in InnoDB ? Eroarea apare absolut spontan, si 3 clienti de-ai nostri au raportat-o, dar a aparut o data, dupa care a disparut. Toti cu aplicatii mysql embedded. Cei cu ODBC nu au intampinat-o.&lt;br /&gt;&lt;br /&gt;Nu am spus nimic de eLiberatica. A fost frumos, o experienta intr-adevar unica cu bune si rele. In cautarea mea a pasiunii pentru ceea ce inseamna cod, am dat peste open source si tocmai pentru ca am avut asteptari, cred ca am fost dezamagit. eLiberatica mi-a placut ... a fost frumos si cu siguranta voi participa si anul urmator. Am cam fost prins la stand si am ascultat prezentarile in fuga. Recunosc ca am cunoscut 3 programatori foarte interesanti, cu care am schimbat idei, iar cateva deja se regasesc in Concept. Ce nu mi-a placut, este ca open source-ul in continuare este gasit in titluri precum "Cum poti face bani din Open Source". Un prieten, pornit pe open source, spunea asa "cei ce nu pot vinde, fac open source" - are dreptate - dar eu as completa cu "cei ce nu vor sa vanda, fac open source". Un pasaj interesant, gasit de curand spunea:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Under communism, there is no need for money, because all goods needed to support life are free, which by "free" we mean the BEEP take all your loot. The problem with this is that everybody loves money.&lt;/span&gt; (ar fi o explicatie pentru noi romanii, atat de dornici de a face bani)&lt;br /&gt;&lt;br /&gt;E interesant, pentru ca open source-ul asa cum l-am vazut eu, e ... pe-acolo. Tind totusi sa cred ca open source-ul este pasiune.&lt;br /&gt;O alta problema cu multe comunitati open source este ca "vorbesc" in loc sa "faca". Vorbim, dezbatem ... dar nu facem. Cred ca sunt prea multe orgolii la mijloc ... sa nu uit ... am incercat sa contactez o comunitate open source din Romania ... dar am esuat.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TRECETI LA TASTE OPENSOURCISTILOR SI PROGRAMATI!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6913369156397259149?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6913369156397259149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6913369156397259149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6913369156397259149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6913369156397259149'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/07/tot-mai-aproape-de-10.html' title='Tot mai aproape de 1.0'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/Sl9BqjOpaDI/AAAAAAAAAEY/xvpNZTh8H9E/s72-c/thumbs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-330006036450200906</id><published>2009-05-19T21:19:00.006+03:00</published><updated>2009-05-19T21:24:22.293+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='Nuchilar bee'/><category scheme='http://www.blogger.com/atom/ns#' term='Logo'/><title type='text'>Avem logo pentru Concept Application Server</title><content type='html'>Dupa gandit si razgandit, avem un logo pentru Concept Application Server, logo si mascota. E vorba de o albinuta pe care o cheama "Nuchilar" Bee.  E simpaticuta. Legatura cu CAS ?&lt;br /&gt;&lt;br /&gt;Simplu ... albinele comunica la distanta, lucreaza in echipa (cam cum lucreaza aplicatiile Concept) si fac miere !&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/ShL5Rl7kHdI/AAAAAAAAAEQ/XNcxCXic6BE/s1600-h/Nuclear+Bee+PNG+Transparent.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 274px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/ShL5Rl7kHdI/AAAAAAAAAEQ/XNcxCXic6BE/s320/Nuclear+Bee+PNG+Transparent.png" alt="" id="BLOGGER_PHOTO_ID_5337602589022494162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;E desenata de Olimpia Lazar, fara photoshop ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-330006036450200906?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/330006036450200906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=330006036450200906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/330006036450200906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/330006036450200906'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/05/avem-logo-pentru-concept-application.html' title='Avem logo pentru Concept Application Server'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/ShL5Rl7kHdI/AAAAAAAAAEQ/XNcxCXic6BE/s72-c/Nuclear+Bee+PNG+Transparent.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1638149417406512251</id><published>2009-04-24T07:45:00.004+03:00</published><updated>2009-04-24T07:51:40.935+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebKit'/><category scheme='http://www.blogger.com/atom/ns#' term='WKB'/><category scheme='http://www.blogger.com/atom/ns#' term='CIDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept WEB'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept Client'/><title type='text'>Concept Web Browser</title><content type='html'>Am reusit sa fac ceva ce-mi doream de mult: un browser (bazat pe WebKit, nu-ti imagina ca am facut eu un engine de randare). Totul vine ca plug-in pentru Concept Client, si interfata e identica pe majoritatea sistemelor de operare. Concept WKB (WebKit Browser) va fi integrat in CIDE, astfel incat testele pentru aplicatiile web sa se faca strict din IDE. De asemenea, wrapper-ul este foarte util pentru embeduirea WebKit in aplicatii concept:// (cam cum face Microsoft)&lt;br /&gt;.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SfFElv0uqAI/AAAAAAAAADw/FfleLUAlZ5Y/s1600-h/ConceptWKB2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 230px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SfFElv0uqAI/AAAAAAAAADw/FfleLUAlZ5Y/s320/ConceptWKB2.png" alt="" id="BLOGGER_PHOTO_ID_5328115249439483906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/SfFEva8kY5I/AAAAAAAAAD4/vYFepKfJpQA/s1600-h/conceptwkb.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 230px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/SfFEva8kY5I/AAAAAAAAAD4/vYFepKfJpQA/s320/conceptwkb.png" alt="" id="BLOGGER_PHOTO_ID_5328115415633912722" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1638149417406512251?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1638149417406512251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1638149417406512251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1638149417406512251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1638149417406512251'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/04/concept-web-browser.html' title='Concept Web Browser'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SfFElv0uqAI/AAAAAAAAADw/FfleLUAlZ5Y/s72-c/ConceptWKB2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-2220915335244271687</id><published>2009-04-20T13:36:00.006+03:00</published><updated>2009-04-20T13:43:56.019+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cautare'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='Xapian'/><title type='text'>Cautare indexată</title><content type='html'>Salut. Ce fac oare de Paste ? ... lucrez ... am adaugat Xapian (engine de căutare). Am construit atât wrapper-ul pentru Concept cât și interfața pentru GyroGears. Acum prin simpla bifare a unui flag se poate activa cautarea indexata pentru un proiect, cautare ce vine in 2 variante:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;căutare + indexare asincronă (se generează o coadă de indexare, iar indexarea se face de un proces separat, dupa ce a fost adaugată/modificată sau stearsă de un utilizator)&lt;/li&gt;&lt;li&gt;căutare + indexare sincronă (indexarea se face imediat ce informația a fost adaugată)&lt;/li&gt;&lt;/ol&gt;In curand voi posta un link cu primul proiect web 2.0 generat cap coada din GyroGears.&lt;br /&gt;&lt;br /&gt;De ce Xapian ? Ca sa intrebe PHP-istii "de ce nu Lucene ?". Voi implementa si Lucy (varianta C a lui Lucene imediat ce va exista un release pentru aceasta). Un alt motiv pentru Xapian este faptul ca foloseste &lt;a href="http://en.wikipedia.org/wiki/Probabilistic_relevance_model_%28BM25%29"&gt;BM25&lt;/a&gt; (ce pe Lucene am inteles ca este disponibil doar ca plug-in separat).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-2220915335244271687?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/2220915335244271687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=2220915335244271687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2220915335244271687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/2220915335244271687'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/04/cautare-indexata.html' title='Cautare indexată'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-5516150510548639659</id><published>2009-04-20T13:36:00.001+03:00</published><updated>2009-04-20T13:36:31.897+03:00</updated><title type='text'>Cautare indexat</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-5516150510548639659?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/5516150510548639659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=5516150510548639659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5516150510548639659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/5516150510548639659'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/04/cautare-indexat.html' title='Cautare indexat'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4057193400035821371</id><published>2009-04-03T08:46:00.004+03:00</published><updated>2009-04-03T08:54:45.564+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='video sharing'/><title type='text'>GyroGears + Video Sharing = LOVE</title><content type='html'>Am amintit in ultimul post ca exista elemente noi prin Gyro. Unul din ele este tipul de date "multimedia" ce poate tine continut video/audio. Se foloseste ffmpeg pentru a genera imaginile de preview; tot prin ffmpeg se face "normalizare" (conversia la un format standard la un bitrate/samplerate standard, de exemplu flash video). Pentru asta se genereaza si un Concept Service - o coada de conversie ce ruleaza permanent si asteapta sa se primeasca un video pentru a-l procesa; stabileste ordinea de procesare pe modelul FIFO (primul venit, primul servit). Am atasat 2 capturi - prima cu interfata de definire din Gyro si una cu rezultatul (aplicatie Concept). Pot fi generate si aplicatii web traditionale (astfel, putand face un sistem gen YouTube in maxim cateva ore).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/SdWkDbTk-UI/AAAAAAAAADg/auvQ2tDx62o/s1600-h/mm.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 286px;" src="http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/SdWkDbTk-UI/AAAAAAAAADg/auvQ2tDx62o/s320/mm.png" alt="" id="BLOGGER_PHOTO_ID_5320338913584544066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figura 1 - Tipul de date "multimedia"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SdWkDkleVkI/AAAAAAAAADo/uSkh3h5PEdw/s1600-h/gyrommedia.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 230px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SdWkDkleVkI/AAAAAAAAADo/uSkh3h5PEdw/s320/gyrommedia.png" alt="" id="BLOGGER_PHOTO_ID_5320338916075525698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figura 2 - Aplicatie cu tipul "multimedia"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4057193400035821371?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4057193400035821371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4057193400035821371' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4057193400035821371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4057193400035821371'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/04/gyrogears-video-sharing-love.html' title='GyroGears + Video Sharing = LOVE'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pN2Hz7Rp5UQ/SdWkDbTk-UI/AAAAAAAAADg/auvQ2tDx62o/s72-c/mm.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3421486013630950556</id><published>2009-04-01T08:34:00.003+03:00</published><updated>2009-04-01T09:09:54.079+03:00</updated><title type='text'>Make software not money !</title><content type='html'>O să mă abat de la subiectul uzual (GyroGears). Am participat în ultimul timp la tot felul de întâlniri in care s-a discutat despre soft și trebuie să recunosc că am rămas destul de dezamăgit. Observ că există o problemă cât se poate de serioasă cu gândirea 'corporate'. Sper ca doar pe meleagurile noastre. &lt;br /&gt;&lt;br /&gt;Acum, aș vrea să-ți amintești, că programatorul nu este mercenar; poate ca nu este nici artist ... dar cu siguranță este undeva între. "Programarea" (îi voi spune de acum așa, nu "software development") trebuie făcută cu drag, cu pasiune, nu de dragul salariului. Am auzit niște povești "marketiste" atât de frumoase, cu cuvinte așa de mari, încat sunt convins ca dincolo de client ce ajunge să fie derutat ... chiar consultantul nu mai știe ce vinde (dar învață la training-uri !). Un prieten mi-a spus "am vandut clienților soluții fără să știe exact ce cumpară"... fiind mândru de asta. Oare e motiv de mândrie asta ?&lt;br /&gt;Nu sunt în extrema lui Stallman (cu toate că sunt de acord cu el în multe privințe), eu considerând că trebuie să avem și licențe comerciale, dar totuși, obiectivul principal nu trebuie să fie "vânzarea". Gândește-te la principiul: "calatoria este jumatăte din distracție".&lt;br /&gt;&lt;br /&gt;Am văzut un &lt;a href="http://www.youtube.com/watch?v=_5Z7eal4uXI"&gt;video foarte interesant&lt;/a&gt;, un interviu cu Bill Gates și Steve Jobs. La un moment dat se discută de faptul că Bill, în tinerețe a fost la Apple să-i ajute cu o implementare. Prima întrebare a fost "cu cât ai fost platit" (30.000$), dar Bill a raspuns incepând cu "It was actually fun". Acum, venim noi, "corporatiștii de Balcan", și credem ca o sa existăm și peste 20 de ani ... probabil că nu ... Știi poate că era acea perioadă, în care oricine avea 2 apartamente comuniste scoase la vânzare în București sau Cluj, se credea Donald Trump ... &lt;br /&gt;Că veni vorba ... oare e in regula să avem ca model capitalist pe Donald Trump ?&lt;br /&gt;Avem "Earth hour" ... ce-ar fi dacă am avea și o "no marketing bull**** hour" ?&lt;br /&gt;Oare "go green" nu ar fi "ipocrizia suprema" in materie de marketing ?&lt;br /&gt;&lt;br /&gt;Vroiam să-ți scriu despre GyroGears astăzi, sunt multe elemente noi, dar le vei vedea dacă downloadezi sau in post-urile următoare.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3421486013630950556?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3421486013630950556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3421486013630950556' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3421486013630950556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3421486013630950556'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/04/make-software-not-money.html' title='Make software not money !'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-9046613748814171223</id><published>2009-03-27T17:23:00.006+02:00</published><updated>2009-03-27T17:31:34.544+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prezentare'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Prezentare GyroGears !</title><content type='html'>Salut. Am facut un draft al primului tutorial GyroGears. E un pic cam lung (41 de minute), deoarece am inceput prin a prezenta si Concept Application Server (primele 10 minute).&lt;br /&gt;&lt;br /&gt;Vizionare placuta (daca exista rabdarea necesara) !&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="350"&gt;&lt;param name="movie" value="http://www.trilulilu.ro/embed/flash.php?type=video&amp;hash=4484c15327b6f4&amp;userid=rolf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.trilulilu.ro/embed/flash.php?type=video&amp;hash=4484c15327b6f4&amp;userid=rolf" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" width="400" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-9046613748814171223?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/9046613748814171223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=9046613748814171223' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/9046613748814171223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/9046613748814171223'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/03/prezentare-gyrogears.html' title='Prezentare GyroGears !'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-4933517536705377430</id><published>2009-03-17T23:26:00.005+02:00</published><updated>2009-03-23T22:18:09.523+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='picture'/><category scheme='http://www.blogger.com/atom/ns#' term='thumbnails'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>"Enhancing the User Experience" sau poze colorate</title><content type='html'>Revin cu elemente noi prin &lt;span style="font-weight: bold;"&gt;GyroGears&lt;/span&gt; (distributia de pe &lt;a href="http://www.radgs.com/"&gt;www.radgs.com&lt;/a&gt; a fost deja actualizata, pachetul Concept Application Server, ce contine GyroGears BETA). In afara de foarte multa depanare, am mai adaugat thumbnails-uri pentru campurile de tip 'picture'. Cred ca se poate oferi astfel o aplicatie vie, ce poate reuseste sa prezinte view-uri mai ... "non-foxpro" (fara suparare fata de programatorii fox). Practic sunt puse cap la cap toate elementele pentru a genera un catalog virtual sau un magazin virtual in cateva minute. Sa nu uit !  Screenshot-ul este dintr-o aplicatie "A basic organizer" definita folosind GyroGears in 21 de minute. Exista si screencast-ul pt asta, doar ca, inca nu am avut timp sa fac comentariile pentru prezentare.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/ScAXbKA7kbI/AAAAAAAAADY/6VEfFu3uJG8/s1600-h/photopreview.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 231px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/ScAXbKA7kbI/AAAAAAAAADY/6VEfFu3uJG8/s320/photopreview.png" alt="" id="BLOGGER_PHOTO_ID_5314273315609350578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-4933517536705377430?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/4933517536705377430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=4933517536705377430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4933517536705377430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/4933517536705377430'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/03/enhancing-user-experience-sau-poze.html' title='&quot;Enhancing the User Experience&quot; sau poze colorate'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/ScAXbKA7kbI/AAAAAAAAADY/6VEfFu3uJG8/s72-c/photopreview.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-7822262656491446615</id><published>2009-03-05T01:12:00.000+02:00</published><updated>2009-03-05T01:19:59.366+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='horeca'/><category scheme='http://www.blogger.com/atom/ns#' term='touch screen'/><title type='text'>GyroGears si touch screen</title><content type='html'>Am finalizat suportul de touchscreen pentru GyroGears. Totul se rezuma la cateva operatii foarte simple, astfel: un flag(bifa) cu "Optimize for touch screen" si filtre de touch screen. Un filtru de touchscreen imi va genera niste butoane foarte mari, pe care utilizatorul va face click "sectionand" view-urile. Astfel, daca ne gandim la un sistem horeca, putem defini filtre pentru "sucuri", "bauturi alcoolice", "cafele", etc.. Cand utilizatorul va alege "sucuri", i se vor afisa numai entitatile din "Produse" ce fac parte din categoria "suc". Am atasat si 2 screenshot-uri: primul din GyroGears, din zona de definire a filtrelor de touch screen si un al doilea screenshot cu interfata rezultata, cu "Handpad"-ul vizibil.&lt;br /&gt;&lt;br /&gt;.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sa8MM2pdWLI/AAAAAAAAADI/MwCh531AhB0/s1600-h/gyrofilters.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 212px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sa8MM2pdWLI/AAAAAAAAADI/MwCh531AhB0/s320/gyrofilters.png" alt="" id="BLOGGER_PHOTO_ID_5309475900660471986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fig 1&lt;/span&gt; - Definirea filtrelor de touchscreen&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sa8MNGrYnwI/AAAAAAAAADQ/pFhSMZTNRVw/s1600-h/touchscreen.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sa8MNGrYnwI/AAAAAAAAADQ/pFhSMZTNRVw/s320/touchscreen.png" alt="" id="BLOGGER_PHOTO_ID_5309475904963518210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fig 2&lt;/span&gt; - Interfata touchscreen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-7822262656491446615?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/7822262656491446615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=7822262656491446615' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7822262656491446615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/7822262656491446615'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/03/gyrogears-si-touch-screen.html' title='GyroGears si touch screen'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/Sa8MM2pdWLI/AAAAAAAAADI/MwCh531AhB0/s72-c/gyrofilters.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-586798612908825919</id><published>2009-03-02T08:39:00.001+02:00</published><updated>2009-03-02T08:43:37.207+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ceai'/><category scheme='http://www.blogger.com/atom/ns#' term='AISEC'/><category scheme='http://www.blogger.com/atom/ns#' term='Brad'/><title type='text'>Intre o cana de ceai si IT Academy</title><content type='html'>Ce fac programatorii Concept in week-end:&lt;br /&gt;&lt;br /&gt;- Am fost sambata sa le vorbesc celor din AISEC despre Concept. Trebuie sa recunosc ca a fost destul de interesant, reusind sa stabilesc contact cu destul de multe persoane interesate.&lt;br /&gt;&lt;br /&gt;- Intre Gyro si Concept, m-am pus la o cana de ceai de menta, in umbra bradului meu de Craciun. Dupa care, am realizat ca doar ce a trecut 1 Martie si inca mai am bradul ... dar e frumos, si inca nu naparleste ... oare va rezista pana in decembrie ? ... sau va trebui, ca in anii precedenti, sa-l scot tiptil-tiptil noaptea, ca sa nu ma vada vecinii, probabil candva prin luna mai ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-586798612908825919?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/586798612908825919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=586798612908825919' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/586798612908825919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/586798612908825919'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/03/intre-o-cana-de-ceai-si-it-academy.html' title='Intre o cana de ceai si IT Academy'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6165560472809764717</id><published>2009-02-27T23:22:00.000+02:00</published><updated>2009-03-02T08:44:26.222+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GyroGears BETA'/><category scheme='http://www.blogger.com/atom/ns#' term='brizbriz'/><category scheme='http://www.blogger.com/atom/ns#' term='filtre'/><title type='text'>GyroGears BETA pentru toata lumea</title><content type='html'>Am revenit. Din pacate luna aceasta am fost foarte ocupat, atat cu CAS si mai ales cu GyroGears. Multe lucruri noi, printre care: combo-uri conditionate, astfel:&lt;br /&gt;Daca avem o relatie (many to *) atunci putem sa definim un filtru. La ce este util ? La foarte multe, cum ar fi, entitatile de tip Judet ce sunt in relatie cu Orase. Atunci, intr-un form, cand aleg judetul, e mult mai interesant daca pentru oras, nu ma lasa sa aleg decat din orasele judetului.&lt;br /&gt;&lt;br /&gt;Multe briz-briz-uri adaugate precum suportul de touchscreen (butoane mai mari si buton "context-helper" pentru emularea click-dreapta) ... si nu in ultimul rand ... mult debugging !&lt;br /&gt;&lt;br /&gt;O alta veste buna este ca: &lt;span style="font-weight: bold;"&gt;GyroGears 0.91 BETA este inclus in pachetul Concept Application Server !&lt;/span&gt;&lt;br /&gt;... fiind free, dar din pacate, deocamdata nu open-source.&lt;br /&gt;Pachetul poate fi downloadat de pe &lt;a href="http://www.radgs.com/"&gt;www.radgs.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6165560472809764717?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6165560472809764717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6165560472809764717' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6165560472809764717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6165560472809764717'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/02/gyrogears-beta-pentru-toata-lumea.html' title='GyroGears BETA pentru toata lumea'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-3339210220447536103</id><published>2009-01-14T20:39:00.001+02:00</published><updated>2009-01-14T20:56:14.540+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAS'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='optimizari'/><title type='text'>Optimizari!</title><content type='html'>In ultimul timp am fost preocupat de optimizari pentru Concept Application Server si GyroGears. Astfel, dupa o gramada de bataie de cap, am reusit reducerea cu 48% a necesarului de memorie, un server putand rula acum un numar dublu de aplicatii CAS/Gyro. Optimizarile au fost facute doar in framework (44%) si in core(4%). Totusi, ma gandesc la mai mult: avand in vedere ca cea mai mare cantitate de memorie intr-o aplicatie GyroGears este folosita de UI, m-am gandit sa fac un "MinimalControl". Este practic o clasa ce are numarul minim de membri, se opereaza mai low-level cu ea (ex: proprietatile se scriu minimalControl.SetProperty(P_CAPTION, "Text") ). Aceste clase nu vor interactiona cu programatorul (codul fiind generat automat de GyroGears si de CIDE). Ma astept ca in acest mod sa reduc inca o data la jumatate necesarul de memorie. Inca ma gandesc cum voi face transofrmarea de la un "MinimalControl" la controlul echivalent, de exemplu RButton.&lt;br /&gt;Pentru aplicatia de test (HRCompanion) am redus practic consumul de memorie de la 178MB la 93MB. Acum, daca as reusi sa ajung sub 50MB ar fi excelent (avand in vedere ca este o aplicatie foarte complexa).&lt;br /&gt;&lt;br /&gt;Pana atunci, intram iar in BETA cu framework-ul ... dar probabil ca-l voi propune ca versiunea 1.1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-3339210220447536103?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/3339210220447536103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=3339210220447536103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3339210220447536103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/3339210220447536103'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/01/optimizari.html' title='Optimizari!'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-982098160932904407</id><published>2009-01-04T20:25:00.000+02:00</published><updated>2009-01-04T20:44:17.769+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web script'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache module'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Concept WEB'/><title type='text'>Pregatiri Concept(uale)</title><content type='html'>Lucrez intens la partea de Web pentru GyroGears. Nu e un secret faptul ca atunci cand se doreau aplicatii web traditionale (pagini web de server) se rula in general prin Apache + Concept CGI.&lt;br /&gt;Dezavantajele folosirii interpretorului CGI erau evidente: de la securitate, pana la timpul de raspuns crescut (dar de cele mai multe ori insesizabil). Dincolo de asta, erau cazuri cand nu se interceptau erorile (din diferite motive, cum ar fi netrimiterea header-urilor s.a.m.d.).&lt;br /&gt;&lt;br /&gt;Solutia a fost sa fac un modul de Apache 2.x. Bataie mare de cap de un week-end ... in principal din cauza documentatiei sau mai bine spus a lipsei "dansei". In final, cu chiu cu vai, uitandu-ma peste ce au facut altii si facand zeci de artificii, numite de mine "ciorba" am legat ceva ... ii voi spune deocamdata versiunea 0.8 beta. De ce 0.8 ? Pentru ca asigura 80% din functionalitate. Concept pentru aplicatiile web, foloseste qDecoder. O biblioteca bine gandidata pe fiecare versiune in parte ... dar prost gandita in materie de versiuni, astfel, codul scris pe versiunea 6 nu va fi compatibil pe versiunea 9 ... Dincolo de asta, a trebuit sa iau versiunea 6 si sa o modific astfel incat sa functioneze si cu Apache. Practic, qDecoder presupunea rularea ca CGI si citea totul din variabilele de mediu (environment variables). A trebuit sa modific inclusiv in CORE-ul Concept astfel incat sa am un parametru "userdata" (care poate fi practic orice) care sa circule intre Apache si qDecoder, traversand Concept CORE... mare bataie de cap, dar a iesit bine.&lt;br /&gt;Acum, problema este cu memoria: Daca in materie de CORE lucrurile stau &lt;span style="font-weight: bold;"&gt;relativ bine&lt;/span&gt;(bine e imposibil, pentru ca vorbim de software =&gt; bug-uri), in multe biblioteci 3rd party exista memory leak-uri, facand sa creasca memoria necesara procesului Apache HTTPD. Creste, dar pana cand ? ... pana se restarteaza Apache. Suna un pic alarmant, dar leak-urile tin de bibliotecile altora ... O poza intitulata &lt;a href="http://john.jdowning.com/nmj.htm"&gt;"not my job"&lt;/a&gt; imi explica punctul de vedere(nu o copiez aici pentru a evita problemele de drepturi de autor). Acum, nu spun ca nu exista memory leak-uri in CORE-ul Concept sau in Concept Framework ... Probabil ca exista, si cum le voi descoperi sau imi vor fi raportate, le voi repara.&lt;br /&gt;Pe pagina &lt;a href="http://www.radgs.com/43-apache-2-module.html"&gt;http://www.radgs.com/43-apache-2-module.html &lt;/a&gt;exista instructiuni pentru configurarea lui Apache HTTPD 2.x atat pentru ferestre cat si pentru pinguini sau draci.&lt;br /&gt;Pana atunci, testam interfetele pe cativa din clientii nostri, care au trecut azi de pe CGI pe mod_concept si deocamdata n-au aparut probleme.&lt;br /&gt;&lt;br /&gt;PS: Am rezolvat un bug minor din Concept Client care facea consola sa ramana uneori deschisa atunci cand aparea o eroare. Acum se inchide. Era un bug minor, deoarece nu afecta functionarea aplicatiilor. Oricum, am pus update-ul pe site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-982098160932904407?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/982098160932904407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=982098160932904407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/982098160932904407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/982098160932904407'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2009/01/pregatiri-conceptuale.html' title='Pregatiri Concept(uale)'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-1860058831362470029</id><published>2008-12-26T01:24:00.000+02:00</published><updated>2008-12-26T02:23:46.177+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programare'/><category scheme='http://www.blogger.com/atom/ns#' term='generare automata'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><category scheme='http://www.blogger.com/atom/ns#' term='baze de date'/><category scheme='http://www.blogger.com/atom/ns#' term='tehnologie'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>GyroGears devine BETA de Craciun</title><content type='html'>&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt; In timp ce &lt;span style="font-style: italic;"&gt;oamenii normali* &lt;/span&gt;sarbatoreau Craciunul alaturi de cei dragi, eu am sarbatorit in felul meu: lucrand. Am lucrat foarte mult in ultimul timp la cateva elemente noi:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Generatorul automat de help pentru aplicatiile Gyro&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Rapoartele avansate (ca un inceput de solutie de B.I.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;nu ca as fi pe deplin lamurit ce inseamna &lt;a href="http://en.wikipedia.org/wiki/Business_intelligence"&gt;B.I.&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &gt;&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Acum, pe rand: Generatorul automat de help, face documentatia pentru toata aplicatia generata de GyroGears. Am mers pe o solutie foarte simpla, templatizata (astfel incat sa fie foarte usoara adaptarea pentru o alta limba decat cea default). Un exemplu poate fi vazut aici: &lt;a href="http://www.radgs.com/help_sample/"&gt;http://www.radgs.com/help_sample/&lt;/a&gt; . Veti observa probabil romengleza in care este scris. Acest lucru este cauzat (nu datorat !) de faptul ca aplicatia este descrisa in limba romana iar template-ul de help este in limba engleza (iar, a se ignora greselile gramaticale - voi reveni asupra template-urilor in perioada BETA). Toata aceasta documentatie a fost generata 100% automat fara pic de interventie din partea mea. De asemenea, este integrata in aplicatie, raspunzand la F1 - pentru prezentarea "capitolelor" sau Ctrl-F1 pentru help senzitiv, afisand help pentru contextul din care se invoca help-ul.&lt;br /&gt;&lt;br /&gt;Acum, revenind la lucruri (si mai) serioase: &lt;span style="font-weight: bold;"&gt;Rapoartele avansate&lt;/span&gt;&lt;br /&gt;Aici, cateva probleme au fost intalnite:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;rapoartele in Gyro se bazeaza foarte mult pe &lt;a href="http://en.wikipedia.org/wiki/XSL_Formatting_Objects"&gt;XSL:FO&lt;/a&gt;, standard ce mie personal imi place tare mult, dar recunosc ca nu sunt inca familiarizat cu tot ce stie/poate sa faca. Din pacate este destul de greoi, mai ales cand deployment-ul rapoartelor se face pe Apache FOP (ce nu are o implementare 100% compatibila). Solutia a fost implementarea a unui nivel nou, asemanator cu HTML-ul (chiar partial compatibil cu HTML-ul) pentru generarea rapoartelor. Cateva elemente au fost adaugate, precum &lt;span style="font-weight: bold;"&gt;&lt;parameter&gt;&lt;pie&gt;pie, chart&lt;chart&gt;&lt;pie&gt;, datasource&lt;datasource&gt;&lt;chart&gt;, parameter&lt;call&gt;&lt;datasource&gt;&lt;/datasource&gt;&lt;/call&gt;&lt;/chart&gt;&lt;/datasource&gt;&lt;/pie&gt;&lt;/chart&gt;&lt;/pie&gt;&lt;/parameter&gt;&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;call&lt;/span&gt;, etc.. A fost nevoie de aceste tag-uri pentru a interactiona elegant, modular si in siguranta cu baza de date. (vezi screenshot).&lt;/li&gt;&lt;li&gt;Parcurgearea rezultatelor interogarilor (a dataset-urilor) poate genera ambiguitati atunci cand sunt folosite succesiv. &lt;span style="font-weight: bold;"&gt;De exemplu&lt;/span&gt;: pentru un dataset, poate avem nevoie de o parcurgere 2 pasi inainte, unul inapoi. Acum totul depinde de "client"-ul bazei de date si de setarile facute pentru accesta. Daca tot rezultatul va fi adus pe client, este permisa trecerea de la un rand(row) de index mai mare la unul cu index mai mic. Daca nu (daca rezultatul este adus succesiv in cate 1-2-5-N row-uri), nu va fi posibila o astfel de parcurgere. Solutia a fost relativ simpla, dar mancatoare de memorie: aducerea intregului rezultat intr-o matrice. In acest fel, datele pot fi parcurse, extrase sau prelucrate fara limitari si fara restrictii data de setarile clientului pentru baza de date. Daca ai obiectiuni, am un argument cat se poate de serios: daca extragi milioane de inregistrari (cat sa umpli intreaga memorie disponibila) ... unde le vei tipari ? ... pentru ca vorbim totusi de rapoarte "standard" si nu interogari ale bazei de date. In 99% din cauzuri este vorba de pie-chart-uri, grafice sau niste tabele "citibile" de oameni.&lt;/li&gt;&lt;li&gt;Abstractizarea extragerii de date, astfel incat sa poata fi prelucrate date atat de la o simpla interogare SQL sau o succesiune te interogari SQL (ce pot fi grupate si &lt;span style="font-weight: bold;"&gt;&lt;foreach&gt;&lt;/foreach&gt;&lt;/span&gt; astfel incat rezultatul uneia poate fi parametru de intrare la alta) cat si de la o functie scrisa manual (pentru cazuri speciale). &lt;call function="Misc::GetProduse(parametru)" result="Produse"&gt;&lt;carrier from="Produse" field="pret_minim" style="color: rgb(255, 0, 0);"&gt;&lt;/carrier&gt;&lt;/call&gt;&lt;/li&gt;&lt;/ol&gt;Dupa ce toate problemele au fost rezolvate si a fost gasita si o solutie de setare a parametrilor pentru rapoarte (tot XML-based) s-a ajuns la:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQfCbMbiHI/AAAAAAAAAB0/S6qKBcHKQjE/s1600-h/report_parameters.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 157px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQfCbMbiHI/AAAAAAAAAB0/S6qKBcHKQjE/s200/report_parameters.png" alt="" id="BLOGGER_PHOTO_ID_5283882389332527218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQir3G-U7I/AAAAAAAAACU/MoHtLB3RRvg/s1600-h/report_def.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 126px;" src="http://4.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQir3G-U7I/AAAAAAAAACU/MoHtLB3RRvg/s200/report_def.png" alt="" id="BLOGGER_PHOTO_ID_5283886399735354290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Am atasat si raportul in format XML.&lt;br /&gt;Cateva screenshot-uri cu raportul in formatul final (asa cum a fost generat) si cu help-ul integrat in aplicatie:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQhGKDcOdI/AAAAAAAAACE/tuABZAgn0Z8/s1600-h/report_view.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 157px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQhGKDcOdI/AAAAAAAAACE/tuABZAgn0Z8/s200/report_view.png" alt="" id="BLOGGER_PHOTO_ID_5283884652474153426" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQhGXJPwdI/AAAAAAAAACM/2S8NdsnkGfI/s1600-h/help_index.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 157px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQhGXJPwdI/AAAAAAAAACM/2S8NdsnkGfI/s200/help_index.png" alt="" id="BLOGGER_PHOTO_ID_5283884655988163026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok. Acum la 2:15, in noaptea de Craciun, ma pot culca linistit stiind ca GyroGears poate satisface orice solicitare in materie de baze de date si raportare, atata timp cat "orice" este egal cu 98%.&lt;br /&gt;&lt;br /&gt;"Craciun fericit" celor crestini si "Sarbatori fericite" celorlalti.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;*) oameni normali&lt;/span&gt; = presupunem conceptul de normalitate ca fiind definit de majoritate, pentru ca in final nimeni nu-mi pare mai normal decat mine si probabil ca nimeni nu-ti pare mai normal decat tine. In concluzie, cum imi spunea un prieten foarte bun candva: "normalitatea este relativa"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;parameter name="Data inceput" type="date" default="" interval="true" as="Data_inceput"&gt;&lt;parameter name="Data inceput cu ora" type="datetime" default="" interval="false"&gt;&lt;parameter name="Choose combo" type="combo" values="value1, value2, value3"&gt;&lt;parameter name="Some text" type="string" default="some value"&gt;&lt;parameter name="Some story" type="text" default="some value"&gt;&lt;parameter name="Some value" type="number" default="0"&gt;&lt;parameter name="Flag" type="boolean" default="true"&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/parameter&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-1860058831362470029?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/1860058831362470029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=1860058831362470029' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1860058831362470029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/1860058831362470029'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2008/12/gyrogears-devine-beta-de-craciun.html' title='GyroGears devine BETA de Craciun'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SVQfCbMbiHI/AAAAAAAAAB0/S6qKBcHKQjE/s72-c/report_parameters.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-44507567116424006</id><published>2008-11-22T20:45:00.000+02:00</published><updated>2008-11-22T20:52:46.476+02:00</updated><title type='text'>GyroGears 1.0</title><content type='html'>Am tot vorbit de GyroGears, dar nimeni nu l-a vazut inca. Il veti vedea candva prin aprilie 2009 ... pana atunci, am pus un mic filmulet ca sa va faceti o idee.&lt;br /&gt;&lt;object width="400" height="331" class="BLOG_video_class" id="BLOG_video-1fa1c38993d696e0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D1fa1c38993d696e0%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331364573%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D8407A3A6CA4820F1C20F07D3D237793848DD8883.D71A21B4B87768D0D17B9EC2075FABA9E74F921%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D1fa1c38993d696e0%26offsetms%3D5000%26itag%3Dw160%26sigh%3D42g8SB-lp_6mPFPuDvUDDMoy3y4&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="400" height="331" bgcolor="#FFFFFF"flashvars="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D1fa1c38993d696e0%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331364573%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D8407A3A6CA4820F1C20F07D3D237793848DD8883.D71A21B4B87768D0D17B9EC2075FABA9E74F921%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D1fa1c38993d696e0%26offsetms%3D5000%26itag%3Dw160%26sigh%3D42g8SB-lp_6mPFPuDvUDDMoy3y4&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-44507567116424006?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=1fa1c38993d696e0&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/44507567116424006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=44507567116424006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/44507567116424006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/44507567116424006'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2008/11/gyrogears-10.html' title='GyroGears 1.0'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-85932610584241987</id><published>2008-11-19T19:27:00.000+02:00</published><updated>2008-11-19T19:40:44.907+02:00</updated><title type='text'>Date conditionate</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SSRM1azSr6I/AAAAAAAAABc/MyIC88v6xlw/s1600-h/coolfields.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 166px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SSRM1azSr6I/AAAAAAAAABc/MyIC88v6xlw/s200/coolfields.png" alt="" id="BLOGGER_PHOTO_ID_5270421944541556642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Am revenit, bineinteles cu features-uri noi prin GyroGears. Nu de alta, dar simteam nevoia de a ma lauda. Ideea este ca avem cateva elemente noi:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) cautarea dupa parinti a entitatilor&lt;/span&gt;&lt;br /&gt;Practic acum putem sa cautam folosind o sintaxa foarte simpla. Sa presupunem ca avem Client, Oferte si Produse. Vrem sa cautam toate produsele ce figureaza pe oferta unui client. Atunci, pur si simplu definim in interfata Gyro o cale de cautare:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Furnizori: Furnizor/Oferte primite/Produse&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;In aplicatia rezultata ni se va genera un camp de cautare de unde vom alege un Furnizor. Legatura este definita de calea de mai sus (exact ca o cale de directoare). Simplu, nu ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Campuri conditionate&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;Folosind aceste definitii XML (ca in screenshot) se pot defini conditionari. Pentru exemplu de mai sus putem defini ca atunci cand unitatea de masura este 'g'(gram) sa nu se mai ceara numele produsului. Practic putem dezactiva sau ascunde categorii intregi, nu numai campuri. Stiu ca exemplul este unul ... oarecum inutil ... dar pe el am testat.&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SSRPN8_tPSI/AAAAAAAAABs/5-XwGABA_Tk/s1600-h/report.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 97px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SSRPN8_tPSI/AAAAAAAAABs/5-XwGABA_Tk/s200/report.png" alt="" id="BLOGGER_PHOTO_ID_5270424565060549922" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;3) Campuri de definire a rapoartelor&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;De acum cateva versiuni exista posibilitatea de a defini elemente de adaugat in rapoarte, asa cum se vede in imaginea alaturata. Va las pe voi sa va dati seama ce si cum face.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-85932610584241987?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/85932610584241987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=85932610584241987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/85932610584241987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/85932610584241987'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2008/11/date-conditionate.html' title='Date conditionate'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SSRM1azSr6I/AAAAAAAAABc/MyIC88v6xlw/s72-c/coolfields.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-6038419035832619930</id><published>2008-10-31T23:18:00.000+02:00</published><updated>2008-10-31T23:34:21.085+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cautare'/><category scheme='http://www.blogger.com/atom/ns#' term='gyrogears'/><title type='text'>Programare automata</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SQt4Dr4u35I/AAAAAAAAAA0/7pJIMg-WOlw/s1600-h/scr2_result.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 152px;" src="http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SQt4Dr4u35I/AAAAAAAAAA0/7pJIMg-WOlw/s200/scr2_result.png" alt="" id="BLOGGER_PHOTO_ID_5263432594228174738" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SQt4DSukYSI/AAAAAAAAAAs/sPQ0gSVgtjU/s1600-h/scr1_choose.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 151px;" src="http://3.bp.blogspot.com/_pN2Hz7Rp5UQ/SQt4DSukYSI/AAAAAAAAAAs/sPQ0gSVgtjU/s200/scr1_choose.png" alt="" id="BLOGGER_PHOTO_ID_5263432587474657570" border="0" /&gt;&lt;/a&gt;Am adaugat noi elemente de cautare in GyroGears. GyroGears este un sistem automat de dezvoltare bazat pe modelare din specificatii (practic se descrie ce se doreste, iar Gyro va genera intreg codul sursa si framework-ul ... numai bun de integrat in Concept IDE). Noutatea consta in faptul ca acum se poate cauta si dupa entitati inrudite ("relatii").&lt;br /&gt;&lt;br /&gt;In screenshot-uri este o aplicatie simpla de evidenta a ofertelor primite de unul din clientii nostri ce primeste pe mail oferte in format XLS si vrea sa aiba produsele intr-un sistem prin care sa caute dupa diverse criterii. Totul a fost foarte simplu, cu toate ca Excel este o tehnologie Microsoft iar Concept ruleaza pe tehnologii Linux (chiar daca ruleaza pe Windows).&lt;br /&gt;Simplitatea a fost data de ODBC ... care a oferit acces imediat la fisierul Excel. Oricum, dincolo de asta, aplicatia a fost dezvoltata in aproximativ 30 de minute (generand inclusiv rapoarte). In curand vom avea o prezentare oficiala pentru GyroGears.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-6038419035832619930?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/6038419035832619930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=6038419035832619930' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6038419035832619930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/6038419035832619930'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2008/10/programare-automata.html' title='Programare automata'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SQt4Dr4u35I/AAAAAAAAAA0/7pJIMg-WOlw/s72-c/scr2_result.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4752126961947866886.post-8597568550793302908</id><published>2008-10-27T22:44:00.000+02:00</published><updated>2008-10-28T14:01:25.770+02:00</updated><title type='text'>Bohemian_developer.Init()</title><content type='html'>Spatiul ... ultima frontiera ... cu 5 ani in urma am hotarat ca modelele actuale web si desktop nu sunt tocmai pe gustul meu. Pe atunci eram student ... am hotarat sa ma avant (cu capul inainte) in acest proiect ... proiect numit Concept Application Server ... practic este un limbaj de programare cu un framework si un model unic ce functioneaza peste internet. Mai multe informatii gasiti pe site-ul &lt;a href="http://www.radgs.com/"&gt;www.radgs.com&lt;/a&gt;. Aceasta ar fi compania pe care incerc (fara prea mult succes) sa o conduc.&lt;br /&gt;&lt;br /&gt;Oricum, scopul blog-ului nu este acesta, ci ideea din spatele CAS (Concept Application Server). Este un proiect ce imi este foarte drag si e gratis! Este dezvoltat din pasiune si cu forte proprii. Am cautat cele mai bune solutii pentru tot ceea ce am facut: de la bibliotecile linux in licente LGPL pana la standardale Windows. Sper sa nu deschid iar o discutie "windows" vs. "linux". Ok. De aici "boemitatea" ... totul e facut din pura pasiune ... asa cum se intampla peste tot prin anii 80, cand formatiile rock cantau de placere, jucatorii jucau de placere iar banii si tot ceea ce este material parca nu insemna nimic. Din pacate, nu vreau sa fiu ipocrit si sa spun ca programam ... pe pietre colorate si scoici gaurite ... cu toate ca ar fi frumos ...&lt;br /&gt;&lt;br /&gt;Prin anii 80, 2 gemeni, "&lt;a href="http://en.wikipedia.org/wiki/Oliver_Twins"&gt;The Oliver twins&lt;/a&gt;" au creat Dizzy ... poate unii din voi il mai stiu ... cei ce au apucat sa aiba un HC 91 sau un CIP. Era uimitor ce se putea face cu mai putin de 20 de cuvinte cheie si in mai putin de 48Ko de memorie. Oricum, sa revin ... cei doi gemeni au facut o gramada de lucruri extraordinare din pura pasiune si din pasiunea lor si-au luat Ferrari-uri ... este interesant, pentru ca scopul nu a fost "Ferrari" ... si a fost vorba de arta in adevaratul sens al cuvantului ... fara a alerga dupa profit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4752126961947866886-8597568550793302908?l=bohemiandev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bohemiandev.blogspot.com/feeds/8597568550793302908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4752126961947866886&amp;postID=8597568550793302908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8597568550793302908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4752126961947866886/posts/default/8597568550793302908'/><link rel='alternate' type='text/html' href='http://bohemiandev.blogspot.com/2008/10/bohemian-developper.html' title='Bohemian_developer.Init()'/><author><name>Eduard Suica</name><uri>http://www.blogger.com/profile/17112651253621062928</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://2.bp.blogspot.com/_pN2Hz7Rp5UQ/SVS35tSlS9I/AAAAAAAAACg/gpVj0h3MWYs/S220/frogsmile.jpg'/></author><thr:total>0</thr:total></entry></feed>
