Corona SDK Ambassador
Volodymyr Sergeyev himself
RSS feed   View Volodymyr Sergeyev's profile on LinkedIn
Welcome to my portfolio. I provide software development, primarily in Python (Django, Flask, GAE, Java Script, CSS, XHTML, JQuery) and Lua (Corona SDK)
Feel free to contact me by E-mail. My Skype ID: v.sergeyev. CV: CV_2013.PDF
Milestone reached in developing mobile UI for Zenoss application at Sept. 16, 2014

This is just for fun project I drive in free time. Long time I used to be HTML/JavaScript guy, and now most of time spend on python backend work. So to keep my skills sharp have decided to do some fun with Zenoss. And here is some outcome. It may be useful for Zenoss users. Especially, who use mobile a lot.

ZenPacks.community.ResponsiveUI is a free zenpack that overrides some of Zenoss pages when you access it from mobile device. IT Infrastructure (devices list), Events console, Device overview and components, graphs.

Why it said milestone? From my perspective of view main points here is to access devices data, review alerts, components statuses and performance graphs.

Actually tested it with my Motorola Atrix HD Android 4.2 device, iPad 2 and iPhone 6 emulator in Chrome browser.

Read or post comments
Writing middleware for Zenoss page controllers at Aug. 12, 2014

I like how middleware implemented in Django. It is a good way to make some alterations in the middle of request path. Middleware can check wherever user is authenticated to append request object with some flag or data.

Same can be done with Zenoss application. Built on the top of Zope application server Zenoss grants user to extend it with Zenpacks, a plugins to extend core application with new features. For developer it means that one can add a code into Zenoss to perform tasks he need.

Say we want to extend page in Zenoss with a check for mobile device. So we patch original page controller and substitute it's __call__ with our own:


from Products.ZenUtils.Utils import monkeypatch


@monkeypatch('Products.ZenUI3.browser.pages.ITInfrastructure')
def __call__(self):
# For mobile browser returns lite UI
if is_mobile(self.request):
with open(here('resources/templates/itinfrastructure.html')) as f:
t = f.read()
return t
# For desktop browser returns default Zenoss UI
return original(self)

Monkeypatch decorator also saves original method in original variable, so we can call it without a hassle. Those patches can be stacked, so we (and other developer) may use it multiple times on one page controller. Say:


@monkeypatch('Products.ZenUI3.browser.pages.ITInfrastructure')
def __call__(self):
self.request.facebook_token = settings.FB_TOKEN
return original(self)


@monkeypatch('Products.ZenUI3.browser.pages.ITInfrastructure')
def __call__(self):
if not csrf_check(self.request):
raise Exception("Security error: possible CSRF attack!")
return original(self)

Middleware should be loaded when Zope loads your zenpack, so you may place your patches in the __init__.py module of zenpack. Or create for it separate module and import it from __init__.py.

Read or post comments
ZenPacks.community.ResponsiveUI at July 28, 2014

A little plugin, a zenpack for Zenoss 4.2.x Core / Resource Manager

It adds to Zenoss settings for User Interface colors and a button to hide sidebars/menus, aka "Zen mode".
Most of time, I use 13" mac as my primary development environment, and hiding one-two side panels helps a lot in some cases. So why I developed this in my free time. About color settings - thats wasn't planned and have been added just for fun.

This is free to use and open-source zenpack, so you may get it and use in a way you like.

As always, hosted on GitHub: https://github.com/vsergeyev/ZenPacks.community.ResponsiveUI

Read or post comments
Quantum computing on OSX at Nov. 19, 2013

Quantum computing is highly promising area in software. It highly suitable for tasks where complexity grows with elements count: searching path in graph, iterating over list of data, searching for match in DB. Quantum algorithms operates with Qubits, some kind of classical "bits" of data. When classical computers relay on defined state of information bit, programmed Qubit at given moment of time holds all possible values for given data chunk. Every value has own probablity to be true, depending on input data and operations over Qubit.

To start with quantum programming it is good to use Quipper Language. This is high level functional language at top of Haskell.

0. Download Haskell for OSX if it is not already installed. Haskell has nice graphical installer so it is obviously easy to set it up on OSX.

1. Download Quipper.

2. Install pre-required packages:

cabal install random
cabal install mtl
cabal install primes
cabal install Lattices
cabal install zlib
cabal install fixedprec
cabal install containers
cabal install set-monad
cabal install quickcheck

3. Unpack Quipper, open terminal application in it's folder and use make to install it.

make

Read or post comments
Sol Control RTS game pushed to Open Source at Feb. 8, 2013

We worked on this game about a year, and it looks no chanse to publish it in App Store.
So it is pushed to Open Source on GitHub: https://github.com/vsergeyev/sol

Here is game video samples:

Read or post comments
Rain library update (Corona SDK) at Feb. 8, 2013

Just added two useful functions to Rain class.


rain.pause()

pause() - removes rain renderer from on-frame handler.


rain.resume()

resume() - set rain renderer back to Corona on-frame handler, so it will make it rain again :)

GitHub: https://github.com/vsergeyev/Rain

Read or post comments
Highlight search results with JS at Oct. 27, 2012

IMHO: highlighting search patterns in text result better UX and love.

Found this idea somewhere and little improved it:


highlight: function(q) {
var re = new RegExp("(" + q + ")", "gi");
// Highlights search results
$(".highlight-on-search").each(function() {
var el = $(this);
el.html(el.text().replace(re, "<span style='background:red'>$1</span>"));
});
}

Read or post comments
Order items by field in admin at Oct. 5, 2012

Ndbadmin is my pet project to create lightweight and easy to use admin UI for Google App Engine webapp2 projects.

Today I added an option to specify sort order for items in admin UI.

`order_by` - set it in model's Meta and specify a field, same as in Model.query().order()

Example:


class Item(ndb.Model):
name = ndb.StringProperty()
class Meta():
def __init__(self):
self.order_by = Item.name

Read or post comments
Admin panel for Google App Engine ndb.Model at Sept. 23, 2012

Maybe I reinvented the wheel, but working on gae project with webapp2 I haven't found good and lightweight admin UI to meet my needs. So I have spent one day to write an universal CRUD handler and UI for it to create, edit, remove and list items of specified Model.

Twitter Bootstrap CSS has been used to make it look good.

admin panel for gae models

The idea of admin UI is to place Meta() class inside model (yes, it's feels Django-like :), and define in it templates and fields for create/edit form.


class Meta():
def __init__(self):
self.fields = [
fields.TextField("name", "Name", required=True),
fields.BigTextField("description", "Description")
]
# optional
# templates, '/templates/admin/[model]/' path
self.c = "" # new item template
self.r = "" # items list template
self.u = "" # edit item template
self.d = "" # delete item template

It is pushed to github at https://github.com/vsergeyev/ndbadmin

On github lives live gae application with demo models and usage samples.

Read or post comments
Lutsk.io at Aug. 2, 2012

Lutsk.io - July 28, Lutsk.

It was a lot of fun to make it happens and I want to say "Big thank you" to all spokespersons and participants. We discussed a lot of interesting things: Corona SDK framework, UDK kit from Unreal, node.js and npm, Flask micro-framework and Erlang. All this new experience is damn great.

Right now it finished uploading videos from conference and you may watch it on Lutsk.io page: http://www.facebook.com/lutskio

Read or post comments
« Recent posts
This site is © 2007-2013 V.Sergeyev. Powered by Django