2 мая 2012 г.

ActionLinq имплементация языка запросов LINQ для ActionScript.

Многие наверно читали или слышали про язык запросов LINQ.
Это чрезвычайно удобное средства обработки данных. По удобству использование не уступающий и иногда даже немного превосходящий старый добрый SQL. Собственно, почему я это пишу.
Несколько месяцев назад мне нужно было, как то сгруппировать и обработать данные в массиве внутри Flex ActionScript приложения. Но я не хотел обрабатывать объекты просто перебирая их в цикле. И я тогда нашел ActionLinq.
Итак, ActionLinq это практически полная имплементация языка запросов LINQ для ActionScript.
Вот простой пример
package
{
 import flash.display.Sprite;
 import System.Collection.Generic.IGrouping;
 import System.Linq.Enumerable;
 
 /**
  * ...
  * @author ami...[at]mail.ru
  */
 public class AcLinq extends Sprite
 {
  
  public function AcLinq()
  {
   var data:Array = [ { name: "Сергей", age: 20, city: "Москва" }, 
          { name: "Максим", age: 21, city: "Москва" }, 
          { name: "Володя", age: 25, city: "Минск" }, 
          { name: "Сергей", age: 19, city: "Минск" } ];
   
   var new_data:Array = Enumerable.from(data).groupBy(function(name:Object):String
    {
     return name.name;
    }, 
    function(values:Object):Object
    {
     return {age: values.age, city: values.city};
    }, 
    function(name:String, vals:IGrouping):Object
    {
     return { name: name, count:vals.count() };
    }).toArray();
    
    /*
     * А получаем мы в итоге нечто вроде
     * Сергей, 2
     * Володя, 1 
     * Максим, 1*/
    
    trace(new_data);
     
  }
 
 }

}
А самым удобным является что внутри конструкций function() можно определять любые стандартные операторы и конструкции ActionScript и возвращать нужные значения.
На странице wiki  ActionLinq можно прочитать, что поддерживаются многие операторы LINQ. Там же есть кое какие примеры . Так же если хотите больше примеров рекомендую посмотреть на юнит тесты проекта.

8 марта 2012 г.

Spyder среда разработки Python

Мощная среда разработки Spyder имеет функции автодополнения, интроспекции, Анализатор исходного кода. Также имеет Функции профилировшика отладки. Есть возможность непосредственного использования консоли IPython прямо из программы и просмотра документации pydoc. Программа использует библиотеки PyQt или PySide.

7 декабря 2011 г.

15-летней девочке нужна Ваша помощь! Помоги! / HELP! » Сбор средств / Fundraising

К сожалению, болезнь может прийти к любому человеку, вне зависимости от его пола, расы, и что самое страшное, возраста. 15-летняя девочка по имени Настя нуждается в помощи, у нее обнаружена редкая форма рака крови ХМЛ.
Помоги! / HELP! » Сбор средств / Fundraising
Источник

20 октября 2011 г.

Небольшой пример подключения PySide к SQLite.

Небольшой пример подключения PySide к SQLite.
# coding=utf-8
import sys

from PySide import QtGui, QtSql, QtCore

#приложение
main=QtGui.QApplication(sys.argv)
#подключение база
dbase = QtSql.QSqlDatabase.addDatabase('QSQLITE')
#файл базы
dbase.setDatabaseName('my_db.sqlite') 
dbase.open()
query=QtSql.QSqlQuery()
#Создаем базу
query.exec_('CREATE TABLE my_table (number integer PRIMARY KEY NOT NULL, address VARCHAR(255), age integer);')
query.exec_(u'INSERT INTO my_table(number, address, age) VALUES (1, "Варшавское 2", 54);')
query.exec_(u'INSERT INTO my_table(number, address, age) VALUES (2, "Ленина 5", 4);')
#типа DBGird
view = QtGui.QTableView()
#типа Table
model = QtSql.QSqlTableModel()
model.setTable('my_table')
model.select()
model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
view.setModel(model)
view.show()
main.exec_()
Подробнее на C++

30 августа 2011 г.

Валидация e-mail поля в MS Access

Сегодня нужно было решить добавить валидацию поля e-mail в таблице Access.
Думал нужно будет писать функцию и вызывать ее перед сохранением. А оказалось все весьма тривиально. Вот пример

Вот источник примера.

6 июля 2011 г.

Adobe Flash Player ActiveX + IronPython с использованием SharpDevelop

Для многих программистов это тривиальная задача но думаю для начинающих этот топик будет полезен.
Наша задача запустить приложение написанное на IronPython использующее Adobe Flash Player ActiveX c применением среды SharpDevelop.

Понадобится: SharpDevelop и любая версия .Net Framework SDK.

Нам нужно создать компонент для палитры компонентов SharpDevelop. Для этого его надо сгенерировать его с помощью утилиты aximp.exe входящей в состав Net Framework SDK. Команда для генерации довольно таки проста

aximp.exe [имя файла ActiveX]

при этом будет сгенерированно [имякласса]s.dll Ax[имякласса]s.dll. aximp.exe обычно расположена в папке C:\Program files\Microsoft.NET\SDK\*версия*\Bin\ а файл ActiveX %windir%\system32\Macromed\Flash\.

Теперь запускаем SharpDevelop и начинаем новый проект "File">"New">"Solution…", в открывшемся окне выбираем "Python">"Windows Application" указываем имя проекта и нажимаем "Create".

Переходим в режим дизайнера форм нажав кнопку "Design". Переходим к панели "Tools" и вызываем контекстное меню панели, выбираем пункт "Configure Sidebar".

В открывшемся окне добавим новую категорию для нового компонента, нажав кнопку "New", и назовем его "ActiveX". После выберем нашу новую категорию и жмем кнопку "Add Components".

В новом окне переходим во вкладку "Custom" и указываем имя на файл сгенерированный утилитой aximp.exe а именно на тот где имя файла начинается с Ax. Жмем "ok" и еше раз "ok".

Теперь бросаем в окно программы компонент "AxShockwaveFlashObjects" из палитры компонентов и устанавливаем свойство "Movie" объекта равным имени файла нашей флешки. Жмем кнопку "Run". Тут у нас может поджидать ошибка

IronPython.Runtime.UnboundNameException: global name 
'AxShockwaveFlashObjects' is not defined
   at Caller.Call
   at BuiltinFunctionCaller.Call5
   at System.Dynamic.UpdateDelegates.UpdateAndExecute7
   at IronPython.Runtime.Importer.Import
   at IronPython.Runtime.Operations.PythonOps.InitializeModule
   at PythonMain.Main

для его устранения нужно добавить в исходный код программы строку.

import AxShockwaveFlashObjects

снова жмем кнопку "Run" и видим результат

С таким же успехом можно добавить и использовать в среде SharpDevelop любой компонент ActiveX.