January 25, 2012

Tyron Madlener

Why the phpMyAdmin Status Monitor is awesome

So today I checked out my vServer performance using the phpMyAdmin Status Monitor that I have coded last summer, because a user notified me that a certain webpage doesn't load.
I couldn't figure out the problem as the site loaded normally for me and the server wasn't overloaded, however somehow I ended up hammering on the refresh button in the server tab to check what MySQL processes were running because it was fun and interesting.


So then one process did appear that was currently sorting the results of a query. It looked like a candidate for optimization. So I threw it into the query analyzer.



My assumption turned out to be correct. This query is used to determine when the visitor last visited the website, and it took 0.3 seconds to execute. It happens to be run on every page visit of on of my websites.

So, being already in phpMyAdmin, I head over to the table in question and add an index for this field.

ALTER TABLE `cc_counter` ADD INDEX ( `ip` )

Now lets run this query again:


Well that sounds much better doesn't it! From 300ms to 0.8ms. Around 375 times faster now. While we're at it, we might as well write this query correctly.


As we only require the newest visit it is enough find MAX(time) of the visitor in question. Another 40% faster, which results in a speedup of around 525 times compared to the original.

So we not only saved ~0.3 seconds of loading time per visit but also reduced the required CPU time allowing greater workload on the server.

If you are running whatever self written code on your servers or webspace, get the new phpMyAdmin 3.5, check out your database load and optimize your queries. It's very gratifying work ;-)



P.S.: I'm aware that this might be an exceptional case, since a well designed database layout would have proper indexes from the very start. Nonetheless the Status Monitor is a great tool for surgical improvements on bad code like this one. Also in projects that slowly grow over time the chances are not too low to miss out on creating an index where it would be needed.

by Tyron M (noreply@blogger.com) at January 25, 2012 03:22 PM

January 24, 2012

Michal Čihař

It's too early for GSoC 2012

It looks like with start of the new year, people started to ask for phpMyAdmin's projects for GSoC 2012. Given that we have no information whether there will be Google Summer of Code this year and whether we will be chosen to participate, these questions look quite premature.

On the other side you can start contributing any time and if you are already known in the community, you might have better chance being accepted. So forget speaking about hypothetical GSoC projects for now and start fixing some bugs, which is something much more needed right now (given that 3.5 is in alpha state).

If you are looking for more information, we have basic facts for developers on our website, there is also a wiki page mentioning some tasks for junior developers.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 24, 2012 04:00 PM

January 20, 2012

Michal Čihař

More on Flattr

My last post about Flattr has received much more attention than I would expect from short rant, but the feedback forced me to think a bit more about the issue.

I guess that most of Flattr early adopters jumped in for getting some money for things they produce (regardless it is music, text, software or anything else). The initial setup required users to also give money to others and this limitation was later removed and now you can only receive money without giving anything out. In the beginning every now and they I've discovered some interesting thing to flattr, so I usually had to postpone it to next month to give at least some reasonable value. This way initial money people have put there circulated between users and on each transaction they were reduced by 10% fee, what could lead to natural reduction of money available in the system.

Flattr is of course trying to introduce new features to attract new users. Flattr-a-Twitter is probably nice thing, however I somehow did not really get on Twitter train and I think I never will. The new catalog looks nice, still I don't think I will spend time browsing it and looking for content there. So basically this adds nothing useful for me.

Another recent feature - thanking to people who have flattered your thing in last month is IMHO bad idea. I've always seen Flattr as simple way to give little money to lot of various things. In case everybody would send thank you email, it would become every month spam, which I would simply ignore.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 20, 2012 05:00 AM

January 19, 2012

Michal Čihař

phpMyAdmin translations status

As phpMyAdmin is approaching to 3.5 release, it has come time to share about translations status. Same as with past releases, you can expect this "spam" every week or so.

The 3.5 release comes with lot of new strings, so it's some work to get to 100%. However some translators have already managed this and we currently have five translations on 100%:

  • English (Great Britain)
  • Russian
  • Spanish
  • Swedish
  • Turkish

There are few which are really close to 100% and I hope they will get there soon:

  • Danish
  • French
  • Japanese
  • Slovenian

Just on next level is Czech, where I'm progressing quite slowly and would welcome help :-).

Was your language not mentioned? It's now perfect time to contribute to it.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 19, 2012 11:00 AM

January 13, 2012

Michal Čihař

Looking forward to FOSDEM

I just got confirmed my flight bookings for FOSDEM 2012, so I'm looking to meet all great people there again. This year we've again arranged there meeting of phpMyAdmin developers, now it also includes three new faces from last years GSoC.

As for my schedule I did not yet find time to check all the schedule, but what definitely sounds interesting for me is Open Mobile Linux Devroom and some talks in MySQL and Friends Devroom. Rest will be (as usual) scheduled on the fly as I meet people there. This year I decided to deliberately skip keysigning as last year I anyway did not manage to attend it and I expect this year to be equally busy.

In case you want to meet me there, just let me know, we can try to arrange something in free slots :-).

Filed under: Debian English Gammu Phpmyadmin Suse | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 13, 2012 11:00 AM

Looking forward to FOSDEM

I just got confirmed my flight bookings for FOSDEM 2012, so I'm looking to meet all great people there again. This year we've again arranged there meeting of phpMyAdmin developers, now it also includes three new faces from last years GSoC.

As for my schedule I did not yet find time to check all the schedule, but what definitely sounds interesting for me is Open Mobile Linux Devroom and some talks in MySQL and Friends Devroom. Rest will be (as usual) scheduled on the fly as I meet people there. This year I decided to deliberately skip keysigning as last year I anyway did not manage to attend it and I expect this year to be equally busy.

In case you want to meet me there, just let me know, we can try to arrange something in free slots :-).

Filed under: Debian English Gammu Phpmyadmin Suse | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 13, 2012 11:00 AM

January 12, 2012

Michal Čihař

Call for translations of phpMyAdmin 3.5

First phpMyAdmin's alpha release for 3.5 is out for some time and it's best time to start translating if you want to be on time for final release.

For information about translating, check our website, in short you can translate either offline (get file from Git, translate and post it to translations tracker) or use online translation system available here:

https://l10n.cihar.com/projects/phpmyadmin/

As you can see in the summary, there is lot of new or changed strings, many of the new ones coming from advisor. I suggest you to keep these as last to translate as there is quite lot of them and it is more important to have translated rest of application. The advisor messages are placed at the end of po file.

I believe we can reach good amount of complete translations by final release with your contributions!

PS: You can expect me again to publish translations stats on this blog as we're heading to release.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 12, 2012 05:00 AM

Call for translations of phpMyAdmin 3.5

First phpMyAdmin's alpha release for 3.5 is out for some time and it's best time to start translating if you want to be on time for final release.

For information about translating, check our website, in short you can translate either offline (get file from Git, translate and post it to translations tracker) or use online translation system available here:

https://l10n.cihar.com/projects/phpmyadmin/

As you can see in the summary, there is lot of new or changed strings, many of the new ones coming from advisor. I suggest you to keep these as last to translate as there is quite lot of them and it is more important to have translated rest of application. The advisor messages are placed at the end of po file.

I believe we can reach good amount of complete translations by final release with your contributions!

PS: You can expect me again to publish translations stats on this blog as we're heading to release.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 12, 2012 05:00 AM

January 10, 2012

Michal Čihař

Flattr losing it's momentum?

From what I can see on both my personal Flattr account (where was never really much going on) and on (more attractive) phpMyAdmin's profile, the amount of people using Flattr there goes down there every month. There was definitely big momentum when it has been introduced, many geeks saw it as great opportunity for making micro payments work. Maybe people who started to use it at beginning are slowly abandoning it (what is true for me as well) and new ones simply don't come that much or whatever else. Anyway I definitely don't have the big picture to see whether is global trend or just my project is more unlucky...

Filed under: English Phpmyadmin | 9 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 10, 2012 11:00 AM

Flattr losing it's momentum?

From what I can see on both my personal Flattr account (where was never really much going on) and on (more attractive) phpMyAdmin's profile, the amount of people using Flattr there goes down there every month. There was definitely big momentum when it has been introduced, many geeks saw it as great opportunity for making micro payments work. Maybe people who started to use it at beginning are slowly abandoning it (what is true for me as well) and new ones simply don't come that much or whatever else. Anyway I definitely don't have the big picture to see whether is global trend or just my project is more unlucky...

Filed under: English Phpmyadmin | 9 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at January 10, 2012 11:00 AM

January 03, 2012

Dieter Adriaenssens

What a year

2011 has been amazing. There were a lot of firsts and a few big changes in my life :

I bought a house. One of my resolutions for 2011 was to find a new place to live and I managed to do this. This time last year I had no idea I would now be sitting in the living room of my own house, writing this post.
It all went rather quick, first looking for a new apartment/house to rent, then deciding to buy one, followed by the search, finding one, and then all the administration and negotiating with the bank and finally, moving in and doing small construction works.

In the mean time I was a first time mentor for phpMyAdmin in the Google Summer of Code (GSoC) program. My student made phpMyAdmin compliant with Drizzle database, a MySQL fork.


Because of this mentoring, I was invited by Google to attend the GSoC Mentor Summit, which was a great experience, meeting a lot of interesting people and discussing FOSS and GSoC related issues at Google Headquarters.

This also meant I got to travel to the US, another first, and visit San Francisco and a part of California. This was an amazing experience.


For 2012 I have some goals and resolutions :

  • continue contributing to Open Source
  • be a GSoC mentor again
  • write an extensive article/blogpost about good passwords practices, or set up a website/wiki dedicated to it.
  • build a homemade transistor using ice (solid water), or write about the theoretical possibility
  • start reading again and keep a steady reading pace. I didn't manage to keep up reading in 2011.
  • further improve my house

by ruleant (noreply@blogger.com) at January 03, 2012 09:43 PM

Concept of a home made icy transistor

Some time ago I found out that ice (solid water) is a semi-conductor, like f.e. silicon and germanium. So this means that theoretically a diode or transistor can be made out of it, even at home with common products.

What follows is a back of the envelope reasoning, not a proof of concept, as I haven't tried it, but it might work.

First some rudimentary background about semi-conductors and how to make a simple component, like a diode or a transistor. A semi-conductor is basically an insulator that conducts electricity only in some circumstances, for instance when a semi-conductor is doped with another material to add electrons (negative, n-type) or to create 'holes' (positive, p-type), which can conduct electricity.
If a n-type semiconductor is joined by a p-type, you get a diode. If another p-type or n-type is added to create a npn or pnp-sandwich, you get a transistor.

So if frozen water (pure water (H2O), distilled) forms a semi-conductor lattice, it needs to be doped with something else to create the holes and electrons. More research is necessary to find suitable candidates, but for instance kitchen salt consists of sodium (Na) and chlorine (Cl) atoms which, when diluted in (pure) water, become positively and negatively charged ions.
By adding an electrical charge on two sides of the solution (pure water with f.e. a little bit of kitchen salt), most of the positively charged ions would be transfered to one side and the negatively charged ions to the other side. Freezing the solution at that moment would create an ice cube with a p-type and an n-type side, thus a diode.
Cutting a second diode ice cube in half and joining it with the other one, creating a npn or pnp sandwich results in a transistor.

This is just an idea, a lot of things need to be solved to make it work. For instance, what materials should be used to make n-type and p-type semi-conductors out of frozen water? How much of the material is needed? Will this work on a macroscopic scale (regular sized ice-cubes), or should the ice-cube be very tiny?
Where should the electrodes be positioned to separate the ions and what charge is necesarry?
Should the ions be evenly spread, and how can this be achieved?
And if it works, is it a practical diode? It would need subzero temperatures to remain solid, but it could melt by the heat dissipation of the electrical current flowing in the icy diode.

by ruleant (noreply@blogger.com) at January 03, 2012 09:42 PM

Tyron Madlener

Anego CMS Modules - Report 6

Due to the holidays this report has been slightly delayed ;-)
However, I'm happy to report that the gallery module is now mostly finished and only a number of smaller features are missing. Since the last report I've completed:
- Store/Restore image size and crop area
- All the server side code
- Default sizes from which the user can select from. This includes default sizes for the original image, the preview image and the crop area.
- Pictures can be deleted.
- There's now default sizes for the original and preview image which is a per-gallery setting.
- Drag&Drop image reordering is finally working too. I've had difficulties getting jQuery UI Sortable to work, the bug being wrong event bubbling.
- Added a very simple pagination for the blog (not related to the gallery module)
- A ton of bug fixing

The gallery module is now also being tested and running the gallery on my wife's website saraty.com. I was happy to hear that she is very pleased with the simplicity of setting up a gallery. Below is a screenshot of an image being edited.



Until the end of January the only things left to do are:
- There is one bug left to fix with image reordering
- Classic style file upload with file selection
- If there is time left, there could be some per-gallery-batch-image-resize so one could easily change all the preview and original image sizes.
- Write documentation.

by Tyron M (noreply@blogger.com) at January 03, 2012 10:58 AM

December 23, 2011

Thilanka Kaushalya

Miyaesi - an automated music transcriber

For last few months I was unable to write a blog post due to various reasons. May be because of my laziness on writing blog post. But I felt to write a post as my last post in this year, about our final year project which was completed couple of months back.

What is music transcription?
Music transcription is generating the music notation sheet out of a given input music recording. Following diagram shows the process of music transcription.

There are two basic types of music transcriptions.
  • Monophonic music transcription - In polyphonic music there can be only one instrument played at any given instance within the music recording. Monophonic music transcription is transcribing a monophonic music recording.
  • Polyphonic music transcription - In polyphonic music there can be several instruments played at any given instance in music recording. Polyphonic music transcription is transcribing a polyphonic music recording.
This automatic music transcription became and important topic in research field for many decades, due to the complexity of the methodologies and the technologies related to this domain. As final year students we were asked to handle this problem and try out a solution which address these complex issues. So we defined our objective for our final year project as research and develop a system which
  • Identifies notes
  • Identifies Instruments
and ultimately generating the notation sheet corresponding to a given monophonic music recording. "Miyaesi - an automatic music transcriber" became alive as a solution for above mentions issues, as a result of the immense effort taken by our team members for about a year.


Main features of Miyaesi are
  • Generating music notes out of music recording.

  • Detecting dominant instruments in each notes.

  • Creating a playable MIDI file.

  • Voice removal from music recordings.

  • Generating a printable notation sheet.

  • Estimation of a key signature.

  • Notes and MIDI file editing facilities.

  • Playing original and Midi files with notes displaying notes simultaneously.

Out of these features the most important feature is the instrument identification. Even though there are some research publications available on instrument classification area there are no good implementations for that. Miyaesi gain the advantage with this unique feature among other music transcribers.

Miyaesi is an opensource project where any one who is interested can contribute to the project. You can download Miyeasi and try its unique features.


by Thilanka (noreply@blogger.com) at December 23, 2011 05:38 PM

December 17, 2011

Tyron Madlener

Anego CMS Modules - Report 5

In the last 2 Weeks I've been busy implementing a small image editor that allows the user to crop and resize images for the gallery. It turned out to be unexpectedly much work to create a 3-in-1 Image resizer, Cropper and Dragging tool that has some usability. Hence, I wasn't able to write the server code for it yet, which is however the easiest part. For the next report there's a number of functionalities that I have to build:
  • Store and restore the image size and cropped area so a user doesn't need to select it from anew if he wanted the picture just a bit bigger.
  • Server code for cropping and resizing
  • Allow image editing of both thumbnail and full size picture. For this I have already refactored the image editing code into a jquery plugin for it to be modular.



For this project I will probably drop my plans for improving the blog and focus entirely on the gallery. I realize it's a better choice to have a feature-complete, versatile gallery module, rather than having 2 not very finished modules.

by Tyron M (noreply@blogger.com) at December 17, 2011 10:42 PM

December 04, 2011

Tyron Madlener

Anego CMS Modules - Report 4

Since last update I've added a settings dialog for each image so users can change their properties such as description and thumbnail. This information is also saved and stored in database now.

Also I've found a great image cropping tool named Jcrop which I probably will be implementing until next time. I'm also considering to add a thumbnail resize feature like in this demo.

And finally I've been fixing a few bugs in the dialog code.

by Tyron M (noreply@blogger.com) at December 04, 2011 05:39 PM

November 22, 2011

Michal Čihař

phpMyAdmin translations

Today, while merging changes to phpMyAdmin from our translation server I was very surprised that we have two languages which already reached 100% - Slovenian and Turkish (and four more just few strings from 100%). The huge amount of new strings introduced during 3.5 development (mostly being MySQL advisor hints) made me thing it will take very long time till they all get translated, but I was proven wrong.

Anyway there is still lot of work to do, so feel free to join our translators team.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 22, 2011 11:00 AM

phpMyAdmin translations

Today, while merging changes to phpMyAdmin from our translation server I was very surprised that we have two languages which already reached 100% - Slovenian and Turkish (and four more just few strings from 100%). The huge amount of new strings introduced during 3.5 development (mostly being MySQL advisor hints) made me thing it will take very long time till they all get translated, but I was proven wrong.

Anyway there is still lot of work to do, so feel free to join our translators team.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 22, 2011 11:00 AM

November 20, 2011

Tyron Madlener

Anego CMS Modules - Report 3

In this 2 weeks I've had to do some major refactoring of Anegos dialog code so that it allows multiple dialogs. This will be needed so e.g. one can open a gallery settings dialog while being in the edit mode.

In the process I had to touch a lot of code, so I also cleaned up much of the code style. I've also found a number of bugs that I fixed.

The progress on the Gallery itself though hasn't gone much further. I've made only small additions and until the last day I spent a lot of time getting jQuery UI Sortable working on the images so one can Drag&Drop them but I failed. There must be something bugged with that widget.

by Tyron M (noreply@blogger.com) at November 20, 2011 08:55 AM

November 10, 2011

Michal Čihař

phpMyAdmin demo server updates

phpMyAdmin demo server got some updates recently. First of all I've updated MySQL and MariaDB version it uses (MySQL is now on 5.5.7 and MariaDB on 5.3.2).

Later I've finally found time to make mentions of demo server less intrusive and fit more in existing interface. I've used jQuery to inject information about demo server to main page as one of standard boxes. It fits there nicely and puts information on main page where most users land anyway (you can see it for example here). With most important information on main page, the other pages could be reduced and now only mentions demo server and Git revision it is using.

This brings user experience closer to real phpMyAdmin without intrusive information shown on top of every page. I hope you will like it :-).

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 10, 2011 10:48 AM

phpMyAdmin demo server updates

phpMyAdmin demo server got some updates recently. First of all I've updated MySQL and MariaDB version it uses (MySQL is now on 5.5.7 and MariaDB on 5.3.2).

Later I've finally found time to make mentions of demo server less intrusive and fit more in existing interface. I've used jQuery to inject information about demo server to main page as one of standard boxes. It fits there nicely and puts information on main page where most users land anyway (you can see it for example here). With most important information on main page, the other pages could be reduced and now only mentions demo server and Git revision it is using.

This brings user experience closer to real phpMyAdmin without intrusive information shown on top of every page. I hope you will like it :-).

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 10, 2011 10:48 AM

November 07, 2011

Dieter Adriaenssens

California

Waiting in the lobby of the hotel for the shuttle to take me back to the airport. And that will be the conclusion of a 2 week adventure starting at the Google campus for the GSoC Mentor Summit, a road trip visiting several places in North California and an extensive exploration of San Francisco city.

To summarize : it has been amazing. The things I've seen, the nature, the wildlife, the atmosphere, the people I've met and talked to.


So what did I learn :
  • One can pay almost anything with a credit card, even drinks in a bar or a parking meter.
  • Having an insurance is a good thing. If you have one, you will be helped immediately and with a smile. If you don't have one, you will still get a smile, but you are presented a bill before you are helped.
  • San Francisco is a nice city, full of friendly and patient people (exception for cab drivers, but that counts for probably all cab drivers in the world) but also a city of controversy. Rich and poor live together, or more precisely, next to each other, and you can take that quite literally. One moment you're walking down a fancy shopping street, and one block further you find yourself surrounded by homeless people.
  • Automatic gearboxes are nice for driving in the city and on freeways. Cruise control is also a very nice feature. But when doing some hills you just crave for a manual gearbox.
  • Americans are very good at putting signs for anything, usually stating the obvious. It can be a helpful reminder, or in my case, being a tourist visiting the US for the first time, very convenient. But when you need a sign you can't find one.
  • I still haven't come to grasp with traffic rules for crossroads. On crossroads without a traffic light and stop signs on all corners, I haven't figured out yet who gets to drive first. The one who came to the crossroad first, or the one coming from the right.
    On cross roads with traffic lights, it is usually allowed to drive when it's red if you are going right, but not always. So I usually stopped for red anyway, just to be safe. But this sometimes resulted in being notified by the cars behind me that I should be going.
  • Driving by bike in San Francisco is a very nice experience. The challenge is to find streets that are not too steep.
It was a nice experience and I hope to return some day.

by ruleant (noreply@blogger.com) at November 07, 2011 03:01 AM

November 05, 2011

Tyron Madlener

Anego CMS Modules - Report 2

Unfortunately I couldn't find much time to invest on this Project so I will have to catch up within the following 2 weeks.

by Tyron M (noreply@blogger.com) at November 05, 2011 02:56 PM

November 03, 2011

Michal Čihař

Překlad phpMyAdmina

Po delší době jsem se rozhodl do blogu občas přispět i v českém jazyce, tentokrát trochu agitační.

V nové verzi phpMyAdmina bude mimo jiné poradce pro nastavení parametrů serveru, v podstatě obdoba MySQLTuneru a podobných nástrojů. Protože se seskládá z velkého množství pravidel, jedná se opět pro velkou práci pro překladatele. Což je i důvod proč sem píši - zatím většina jejich popisů není přeložena do češtiny a to je úkol, se kterým můžete (při znalosti technické angličtiny) pomoci. Stačí se zaregistrovat na překladový server a začít překládat.

Samozřejmě je záhodno dodržet stávající terminologii používanou v překladu, ale jsem nakloněn i připomínkám a úpravám v něm, stačí se mi ozvat.

Filed under: Czech Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 03, 2011 11:00 AM

Překlad phpMyAdmina

Po delší době jsem se rozhodl do blogu občas přispět i v českém jazyce, tentokrát trochu agitační.

V nové verzi phpMyAdmina bude mimo jiné poradce pro nastavení parametrů serveru, v podstatě obdoba MySQLTuneru a podobných nástrojů. Protože se seskládá z velkého množství pravidel, jedná se opět pro velkou práci pro překladatele. Což je i důvod proč sem píši - zatím většina jejich popisů není přeložena do češtiny a to je úkol, se kterým můžete (při znalosti technické angličtiny) pomoci. Stačí se zaregistrovat na překladový server a začít překládat.

Samozřejmě je záhodno dodržet stávající terminologii používanou v překladu, ale jsem nakloněn i připomínkám a úpravám v něm, stačí se mi ozvat.

Filed under: Czech Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 03, 2011 11:00 AM

November 01, 2011

Michal Čihař

New Pootle on l10n.cihar.com

Translation server for phpMyAdmin and Gammu/Wammu has been updated to run latest Pootle. I had to do this upgrade to be able to run on latest Django, which is used by other websites as well (this blog is one of them).

Unfortunately it was not as easy as running apt-get upgrade as Pootle package has been dropped from Debian recently. So I had to make quick and dirty packages myself (no removal of embedded software and so on).

Installing newer version lead to major breakage as the database upgrade silently failed and I had to recover manually. In the end I've dropped all pootle_* tables and recreated them again. Unfortunately this lead to loss of some data from user profiles, but I could not see other way around.

Anyway the service should be now back running in normal shape, so go ahead and translate :-).

Filed under: Debian English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 01, 2011 12:00 PM

New Pootle on l10n.cihar.com

Translation server for phpMyAdmin and Gammu/Wammu has been updated to run latest Pootle. I had to do this upgrade to be able to run on latest Django, which is used by other websites as well (this blog is one of them).

Unfortunately it was not as easy as running apt-get upgrade as Pootle package has been dropped from Debian recently. So I had to make quick and dirty packages myself (no removal of embedded software and so on).

Installing newer version lead to major breakage as the database upgrade silently failed and I had to recover manually. In the end I've dropped all pootle_* tables and recreated them again. Unfortunately this lead to loss of some data from user profiles, but I could not see other way around.

Anyway the service should be now back running in normal shape, so go ahead and translate :-).

Filed under: Debian English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at November 01, 2011 12:00 PM

October 24, 2011

Dieter Adriaenssens

GSoC Mentor Summit 2011

I'm on the bus back to the hotel, after a weekend of meeting and collaboration with a lot of inspired Open Source developers. We met at Google Headquarters for the annual GSoC Mentor Summit, discussing last year's Google Summer of Code in particular and Open Source collaboration in general. More than 300 people of 175 participating organisations, from all over the world, were present.

It was my first time, both as a GSoC mentor for the phpMyAdmin project as on attending the summit, but it was great (or awesome, like some would state it). I've met and talked with many people. I learned a lot from the different sessions I attended and was pleasantly surprised about how much drive, knowledge and experience was present.

Awesome!

by ruleant (noreply@blogger.com) at October 24, 2011 01:22 AM

October 22, 2011

Tyron Madlener

Anego CMS Modules - Report 1

Week 1
I've spent most time contemplating on how to build a good UI for the Gallery module and researching on HTML5 File upload. Since there is already existing libraries for Drag&Drop file upload I don't have to reinvent the wheel. However as this technology is fairly new, I guess not to many solutions exists for it yet. At least not as jQuery plugin, which for me is a must for better code quality. In particular I've been weighing the pros and cons of:
  • jQuery filedrop: A basic do-it-yourself Drag&Drop file upload that only covers the actual uploading and lets the user implement all the UI related stuff.
  • jQuery File Upload: A fully featured Drag&Drop file upload with GUI that has it all, but requires jQuery UI and the jQuery Templates plugin.
In the end I decided to go for jQuery filedrop because I have a strong desire to directly integrate the uploading part into the gallery view, which is not possible with the already integrated UI of jQuery File Upload. 


Week 2
This week I mostly invested in a massive refactoring of the module system of Anego and improve the code style in many areas to increase the readability and extensibility. Towards the end of the week I was able to implement the basic Drag&Drop file upload and thumbnail generation. The most important infrastructure for the gallery module is now ready. This basically means the most important design decisions are made and it's mostly just fleshing out each functionality now.

Also I'm am happy to report that Anego also has been accepted as part of a project for my Lecture 'Advanced Software Engineering' where a Team of 6 Students (including me) will do some great improvements on the core  system. The blog and gallery module stays untouched by this though - they are treated as a different project.

by Tyron M (noreply@blogger.com) at October 22, 2011 07:07 PM

October 08, 2011

Tyron Madlener

A new Project: 2 Anego CMS Modules

Starting from last week, I have begun a new project that will focus on 2 modules of my experimental content management system Anego CMS. This project will end not later than January 2011 due to the fact that this project will be part of my bachelor studies in software engineering.

Anego is a new, basic and still pretty unstable (in terms of backwards compatibility) cms that I have been working on for the last few years and is powering not only my website (tyron.at) but also my wife's (saraty.com), my brother's (simpleit.at) and any small business websites that I can make my customer (I've got 3 so far!) ;-)

My CMS is using a new model for representing a website page - it is broken down into elements that can be dragged and organized to the users preference. Each of these elements is seen as a "Content Element" plugin/module that users may add and remove to Anego.

There already exists a very basic blog module that allows the creation, editing and deleting of blog entries and a simple comment feature to each blog entry. My Job is it now to improve the blog module, that include the following points:
- Module Interface - The current implementation of module support within Anego is rather unstable, it may have to change quite substantially, thus any already written modules will need to be adjusted accordingly
- Pagination - Currently all blog entries are displayed in one page. Proper pagination needs to be added.
- Archive and Navigation - There currently no overview over the written blog entries, an intelligent way of displaying a list of blog entries needs to be found, as well as implementing archivation features (navigation by year/month or similar)
- RSS Feeds - A blog without RSS support is quite useless.
- Settings: A settings dialog for changing some basic properties such as commenting, entries per page, etc. should be added.
- Comment Anti-Spam and maybe signup by google/facebook/openid/etc: The current implementation of comments may be vulnerable to spam
- Ideally possibility of writing hidden drafts and preview

Also I will implement a Gallery module that should have at least following features:
- HTML5 Multi-Upload-Support and ideally batch-resizing of Pictures
- Display gallery as grid with fancy zooming
- Drag&Drop reordering of pictures
And depending on the required time investment I would also add:
- Gallery Settings: Allowing some display options such as thumbnail size, picture descriptions, pre-loading of images, image zoom type, maybe watermark
- Different gallery display types: classic gallery, image slider, etc.

So altogether its going to be an exciting winter!

by Tyron M (noreply@blogger.com) at October 08, 2011 07:03 PM

September 09, 2011

Tyron Madlener

Web Application Security Scanner

Yesterday I stumbled upon a whole range of software I didn't know it exists. I've found Netsparker, that can automatically scan a website for vulnerabilities such as SQL Injection and Cross Site Scripting threats. All it needs is the URL to your website and it searches and exploits every possible interaction with server side scripts.

There is a Community Edition of Netsparker, which is free but has limited features. Nonetheless it helped me find *a lot* of SQL Injection and XSS threats on my websites. If you run any type of non-static website, I'd strongly suggest to try out this tool. I am damn glad to have used it.

You might also want to check out the comparison of 60 similar tools in this area.

by Tyron M (noreply@blogger.com) at September 09, 2011 08:12 PM

August 22, 2011

Piotr Przybylski

Drizzle support for phpMyAdmin – week 13

My project was mostly complete by the time I posted my previous report, so during last week I concentrated on fixing bugs.

Things done this week:

  • I fixed the tracker functionality to work correctly with Drizzle. The only problem was that Drizzle has no SET type, so I had to emulate it with binary flags and an INT column. After making these changes to the PMA_Tracker class everything started working,
  • Advisor available on server’s Status tab works correctly with Drizzle, I had to add a few exceptions so that rules dependent on variables unavailable in Drizzle don’t fire,
  • bug fixes and some JavaScript optimizations.

 

by Crack at August 22, 2011 12:53 PM

Tyron Madlener

Week 13 report

Since my project was pretty much completed already I didn't have much left to do other than to keep testing and build some additional features.

I originally had only a few regex's to pretty print the sql queries which of course doesn't work for recursing patterns of subqueries. So I've used the tokenizer from CodeMirror and the MySQL Mode to iterate through each token and pretty print it.

What I made this week:
- Rewrote the SQL Pretty printer for the Query Analyzer dialog.
- Easy editing of byte values on the Server variables page
- Lots of fixes and small adjustments

Here's a screenshot that shows the majority of what I've been building this summer:

by Tyron M (noreply@blogger.com) at August 22, 2011 09:08 AM

Aris Feryanto

Browse-mode Improvements – Week 13

This week I added handling for datetime-related data in grid editing and also fixed some bugs in grid editing. I think the grid editing feature is now complete and also the other features that I initially proposed to do in the context of GSoC 2011. All the new features have been merge to the official master repository and may be tested in here.

Things done this week:

  • Added datetime picker in grid editing for datetime-related data type
  • Replaced js/jquery/timepicker.js by Martin Milesich with timepicker by Trent Richardson, as suggested by Martin himself
  • More handling for HTML entities escaping
  • Fix some bugs in grid editing feature

I’m really curious to see the new features from me and other GSoC-ers tested by other phpMyAdmin devs & users and also to hear any feedback from them.


by arisferyanto at August 22, 2011 03:39 AM

August 21, 2011

Rouslan Placella

Report for week 13

This week I continued to work on the new navigation frame. I did lots of changes to the CollapsibleTree and the Navigation classes to improve performance and I'm quite happy with how it worked out. I then implemented the Grouping of tree nodes, the Light/Non-Light modes and Ajax/Non-ajax modes, as well as the fast filter and database pagination (though there is still a bug in the latter).

I think that this feature is far from being ready and that it needs a lot of refactoring, cleaning, commenting, optimising, the addition of missing features and some bugfixes. Tomorrow, I'll properly comment and refactor a bit the Node, CollapsibleTree and Navigation classes, so that this code is more presentable, considering that it will be the last day of coding for GSoC.

Next week I'm going to go on holidays for a few weeks, but I expect to have some spare time after I come back to complete the development of this feature.

by Rouslan Placella (noreply@blogger.com) at August 21, 2011 10:17 PM

Ammar Yasir

GSoC 2011: Week 13

This week mostly I worked on fixing bugs, improving some features and documenting my work. The panning feature required much attention as mentioned in my previous report. So I worked around this by changing the equations used for panning. One issue that we faced was that the existing panning feature had a zoom associated with it. On exploring the Highcharts reference manual we found out that Highchart rounds off to nearest tick in the plot. So on disabling that option the panning feature worked fine.

Apart from that I worked on providing a 'Reset zoom' link to get the original display(if zoomed/panned), added a FAQ in the official documentation about 'How to use the zoom search feature?' (FAQ 6.32), added some code documentation, fixed issue with browsing foreign values and handled the notice that used to be displayed in case data label not selected.

by Ammar Yasir (noreply@blogger.com) at August 21, 2011 09:40 PM

Thilanka Kaushalya

AJAXify phpMyAdmin Interface - GSOC 2011 - 13th week

This is the final week of gsoc 2011. As I mentioned in last weeks report I had to continue with rewriting the querywindow.js functions using jquey this week.

I had to rewrite the following functions this week.
  1. PMA_queryAutoCommit()
  2. PMA_querywindowResize()

Initially I rewrote the logic in "PMA_queryAutoCommit()" function using jquery, but I could not find a scenario where this function is triggered within the query window. Then I asked from Marc to get an ideal of a scenario where this function triggers. Then he suggested me that "clicking on the queries in sql history tab" should trigger this function. Further he mentioned that this scenario didn't work with his testings and if I also couldn't get it check correctly it is better to skip ajaxify this function. I tried the scenario and compiled the querywondow.js file with firebug, but it didn't trigger the "PMA_queryAutoCommit()" function. So I skipped ajaxifying the "PMA_queryAutoCommit()" fucntion.

Then I started working with ajaxify "PMA_querywindowResize()" function and with Marcs help I was able to test it correctly.

With that I finished ajaxifying the functions in querywindow.js file.

Then Marc directed me to a bug which is reported at bug tracker regarding the table->structure->change. When the user clicks on change a column which is having var_cahr type, the change dialog does not load the type correctly. So I went through the code and found this that this issue is not with my ajaxified part, but on original non table structure change section. Then I went though the tbl_properties.inc.php file and found what is the issue for this and reported it to Marc. Then Aris showed what was the bad commit which caused this issue and the remaining changes should do after discussing more with Marc.

With all these, I finished my tasks which were proposed my proposal at the beginning. Lots of people helped me a lot to achieve this success in the project, specially Marc, Ninad, Michal, Madura, Rouslan and Aris. Even after this gsoc project I'm willing to continue contributing to PMA which is a great pleasure to me.

by Thilanka (noreply@blogger.com) at August 21, 2011 06:14 PM

August 18, 2011

Tyron Madlener

Week 10 report

This was a really interesting weekend. I've been digging through my newly discovered MySQL tuning tools most of the time, and discovered 2 great ideas that I could include to my monitor.

First is the mysqltuner 2.0 ruleset that I already mentioned, which I plan to add this week.
And the other is mk-query-profiler from the maatkit command line tools. It uses 'SHOW SESSION STATUS' to read lots of very interesting data about single executed queries. This would be a wonderful addition to my 'Query Analyzer Dialog'.

What I made this week:
I started out realizing that the slow query log loading didn't work at all, so I had to do some bug fixing there. Having the slow log working again I noticed that I forgot to implement grouping/summarization of the slow query columns such as examined_rows, sent_rows, lock_time etc. It took quite some code rearrangement to fix this.

And I kept finding new bugs that I had to fix first. One for example was that the query profiling information in the 'Query Analyzer Dialog' was recorded for the wrong query.

In the remaining time of the week I implemented
- chart config import and export using json as data format
- chart title and series label editing dialog
- a small look into drizzle support. With a small patch most of the status page now works under drizzle (some values don't exist and return php notices though)
- a fix for cpu charts not displaying anything
- error handling when the pma session runs out. It now displays a dialog asking the user to reload the page
- in the 'query analyzer dialog' it now displays all explain outputs (there are multiple explain rows when multiple tables are used)
- added a check for mysql versions that don't support table logging (< 5.1.6)

So lots of small needed fixes and adjustments, plus a unexpected power outage on friday that lasted most of the day kept me from writing actual code for the advisory system.

What I will do next week:
- Advisory system using mysqltuner 2.0 ruleset

What I still would like to do for phpMyAdmin, though not mission critical for my project:
- Display chart from display table page: Handle big amounts of data with zoomable charts
- Debug server variables table width auto-adjustment (doesn't always adjust properly)
- Fix UI of create table dialog / enum editor
- Status Monitor: Add disable general_log + truncate table link to setup dialog
[Edit 01.08.11]
- One more great idea: For the Monitor charts: Allow charting over calculated variables, like the query cache hitrate (Hit rate = Qcache_hits / (Qcache_hits + Com_select))
[Edit 02.08.11] I never run out of ideas -_-
- Fix the query analyzer sql formatter to not fail on subqueries or on occurring strings like "this is where the formatter fails"
- Add a 'Search' - link to the monitor tab allowing one to make searches over slow log / general log and their EXPLAIN's (e.g. find all queries using temporary tables)

by Tyron M (noreply@blogger.com) at August 18, 2011 10:17 AM

August 16, 2011

Madhura Jayaratne

Twelfth week of GSoC


During this week I was mainly engaged in doing some wrapping up work. I started the week with studying about unit testing in PHP. This was totally new to me. I installed PHPUnit into the eclipse environment where I could run the unit tests from the IDE itself. Moreover writing unit tests for PHP was also new to me. I refered to the PHPUnit manual and it was a great source of information to understand how unit testing works with PHP. Also going through the unit tests that was there in PMA I could get some additional knowledge about the writing tests.

With this I started writing unit tests for the code I've written during the summer. I started with unit tests for classes I used for GIS visulaization. Sooner I realized I could make the tests more compact and avoid some code duplications by properly OOPying the tests and went on to do so. I also worte unit tests for the functions in the library files related to GIS.

Later during the week I looked into the documentation of my work. Going through each funcitonlaity I found most of the features to be quite straightforward. However importing ESRI shape files needed some documentation and I provided that as FAQ. I aslo updted the phpMyAdmin wiki with the same details.

With all this my GSoC project has basically come to an end and I'm quite satisfied with the GIS support we have now. However I will work with the team to imporve it further and fix any bugs.

by Madhura (noreply@blogger.com) at August 16, 2011 02:49 AM

August 15, 2011

Dieter Adriaenssens

5 years

Exactly 5 years ago, I posted a 'First Post' on this blog. Back then I was wondering how long this blog would survive. Apparently it still exists. Going over a few posts of the past 5 years I noticed there were some active periods and some slower ones. Times were I posted things that I saw on the streets or read in the newspaper, but I think my blog has evolved into a space were I share IT and technology related stuff that I discover, am working on or I shouldn't forget.
By the way, the top 3 of most visited posts over the last 5 years are IT related :
  1. Two-way MySQL replication
  2. Rename multiple tables in MySQL database
  3. Gadget Keyboard
BTW : A top 5 of the most popular post of the last 30 days is in the column on the right.

by ruleant (noreply@blogger.com) at August 15, 2011 06:23 PM

Ammar Yasir

GSoC 2011: Week 12

This week I continued my work on the issues of plotting support for date-time fields. After looking around for a suitable distance criteria, I decided upon the timestamp values of each date-time (milliseconds passed since 1970-01-01 00:00:00). Date, time, datetime field values were converted into timestamps and plotted with these values to give a meaningful distance measure. Time fields were measured by considering the time values on the day 1970-01-01. The date library at http://www.mattkruse.com/javascript/date/source.html was helpful in converting values to and from timestamps.

The second issue was implementing zoom and pan based on the code snippet at
http://jsfiddle.net/HXUmK/5/. Although the logic of zoom and pan is right the system response time is not good. Also, the equations used for implementing zoom by readjusting extremes are not correct. The equations used in the snippet were:           
newXMin = xMin + (1 - zoomRatio) * xMax                                                            newXMax =  Max * zoomRatio 
(zoomRatio varying from 1 to .6, xMin and xMax being the datamin and datamax)

I replaced the equation with:                                                                                    newXMin  = xMin + (xMax - xMin) * (1 - zoomRatio) / 2;
newXMax = xMax - (xMax - xMin) * (1 - zoomRatio) / 2;
(zoomRatio varying from 1 to .6, xMin and xMax being the axis-min and axis-max)

This improved the mousewheel zoom to some extent. The panning feature was taken from the snippet but its very difficult to use. The logic seems to be right, readjusting the axis extremes based on the position of mouse drag but it is very sensitive. Even a little drag sometimes shifts the axis to a much larger value. I'll look to improve on this but I still think that using the inbuilt zoom, where we can select an area and zoom into it is much powerful and faster way of implementing the zoom/pan.

by Ammar Yasir (noreply@blogger.com) at August 15, 2011 10:53 AM

Thilanka Kaushalya

AJAXify phpMyAdmin Interface - GSOC 2011 - 12th week

According to the schedule I had to continue with ajaxify the table maintenance options in this week. Last week I did some modifications with this task and there were some bugs with that. Marc showed me that some important information are missing with the results of ajaxified table maintenance actions. In CHECK TABLE action there was a table which contains Msg_type and Msg_text information in non ajax configuration but in ajax configuration it was not there. In order to make this information available I had to do the following changes.
  1. Added "if(isset($_REQUEST['ajax_request']) && isset($_REQUEST['table_mainrenance'])) {}" condition to sql.php file in order to handle the table maintenance action and return the results with those useful information.
  2. Change the logic in "<meta content="text/html; charset=utf-8" equiv="content-type"/>$("#tbl_maintenance.ajax li").live('click')" action to get the results sent by sql.php file and then show it in the table operations page using ajax.
Then after Marc showed me a new bug where the documentation links are not functioned properly, I changed the "$("#tbl_maintenance.ajax li").live('click')" action to "$("#tbl_maintenance.ajax li a.maintain_action").live('click')" and changed the tbl_operations.js file according to that.
After all these changes this option seems working properly and I'm waiting for the response by Marc.

Since I skip ajaxify the "Table options" in table operations after discussing with Marc due to inefficiency of doing that, Marc asked me to find a new task instead of that. I went trough various options in PMA and could not find a suitable action which is really need ajax behavior at this moment. Then I went through the "Ajaxify Interface" section in PMA wiki and found that the ajaxification of table insert is remaining as a to do task. After discussing with Marc he mentioned that this is not necessary at this stage and he asked me to involve with more useful task which is rewrite the querywindow.js file using jquery.

The querywindow.js file contains four function which are
  1. PMA_queryAutoCommit()
  2. PMA_querywindowCommit(tab)
  3. PMA_querywindowSetFocus()
  4. PMA_querywindowResize().
I rewrote the 2nd and 3rd functions using jquery and works fine for testing.

Next week I'll continue with rewriting the querywindow.js functions.

<meta content="text/html; charset=utf-8" equiv="content-type"/><meta content="text/html; charset=utf-8" equiv="content-type"/>

by Thilanka (noreply@blogger.com) at August 15, 2011 08:34 AM

Aris Feryanto

Browse-mode Improvements – Week 12

This week, I finished “grid editing” feature and restructured code in makegrid.js file. These changes were already merged into the official master branch and can be tested in the demo page of phpMyAdmin.

Things done this week:

  • Finish grid editing feature
    I added grid editing hint when hovering “Edit” link in table’s rows, alert when user edit some field in non-unique table (i.e., table with no primary key), fix some bugs.
  • Remove inline edit feature
  • Restructure code in makegrid.js
  • Add configuration for maximum number of records stored in pma_table_uiprefs
    I added code in Table.class.php to check the number of records and delete older records in pma_table_uiprefs when saving/updating a record in the table.

Things to do next week:

  • More bug fixing, documentation and code cleaning
  • Improve grid editing: add more specific editor for certain data type (e.g., datetimepicker for DATETIME data type)

With the end of 12th week of GSoC 2011, I and other GSoC-ers are approaching the end of official coding time. For me, all the planned things are done, except for one thing: edit only selected field (see Project Detail section in my proposal). I think this feature won’t be needed anymore, since we can combine “show/hide column” and “grid editing” feature to achieve this. Hopefully there is nothing else missing from my project in the context of GSoC 2011.

Although the GSoC 2011 will end soon and I have already graduated from my college (which for me means: time to go to work), it doesn’t mean that I will stop my contribution for phpMyAdmin. I will still hang around in the mailing list and put my contributions for phpMyAdmin.


by arisferyanto at August 15, 2011 05:57 AM

August 14, 2011

Tyron Madlener

Week 12 report

My Project is completed. The only thing that is left to do is to improve the code style, write some documentation on the phpMyAdmin wiki, fix any occurring bugs and tweak some things here and there.
I still added a new feature this week which took a lot of rewriting in the monitor code. It is now very easy to add preset charts over calculated values. I've already added two, which is for Query cache efficiency and Query cache usage (%). The reason why I had to rewrite a lot is because in case of the query cache usage, it also required a server variable (query cache size). So I've adjusted the chart configuration code to be more generic about the required data.

What I did this week:
- One new feature: Preset charts over calculated values. Newly added: Query cache efficiency and query cache usage (%).
- Improved page load performance by loading the monitor code on demand (+ other speed improvements)
- Implemented and improved the new tooltip system made by Aris
- Added and adjusted some rules for the Advisor system
- Made lots of code style improvements
- Lots of bugfixing

What I will do next week:
- Documentation
- Keep tweaking and scrubbing the code :-)
- Build stuff from my week 10 ideas list again with the leftover time

by Tyron M (noreply@blogger.com) at August 14, 2011 07:35 PM

August 13, 2011

Rouslan Placella

Report for week 12

This week was a bit of a roller-coaster, it started really well as I managed to implement both light mode and non-light mode, as well as ajax integration and various code and query optimisations for the new navigation tree. But soon after I started bumping into problems, first some performance issues that at first didn't seem to be that serious, but that later turned out to be critical. Then I found out that fetching data from information_schema only is a no-no due to this bug in MySQL and this undermined most of the logic that I came up with. I also realised that I was trying to make the tree structure too abstract, but that was another mistake since not all objects are quite the same. By Friday I was completely stuck and had no idea what was the best way to proceed with my work. Anyway, I think that I discarded too much existing code, especially I now think that a big mistake was not to use the PMA_getTablesList function. So, for next week I will still be working on the navigation tree feature, but I'm still not quite sure how I'm going to approach this job. I think that I will have to take a step back, revert most changes that I made and hopefully manage to come up with a better infrastructure.

by Rouslan Placella (noreply@blogger.com) at August 13, 2011 06:24 PM

August 11, 2011

Michal Čihař

New features in phpMyAdmin

As our GSoC students are approaching quite well, we've already numerous features included in current master, which are worth mentioning. You can try all bellow mentioned features on our demo server.

Grid editing provides really simple way of editing data, by simply clicking on it while browsing table. Just try it on some table.

Performance suggestions are part of completely reworked server status and can give you valuable information how to tune your server. You can see it on demo server.

Another nice addition to server status page is live monitor, which charts basic server information in real time. Again, try it on demo server (you need to press start for now, this will probably go away soon).

Other big, thought not that fancy change is complete support for routines. This includes stored procedures/functions, triggers and events. For example see routines in sakilla database.

Of course there is much more to mention, like improving of AJAX in lot of places, GIS support.

On the other side, we've also recently decided to remove support for Microsoft Excel import and export as used PHPExcel library seems to suffer some licensing issues, which prevented phpMyAdmin from being included in Fedora. You can still use CSV or OpenDocument formats though.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at August 11, 2011 12:30 PM

New features in phpMyAdmin

As our GSoC students are approaching quite well, we've already numerous features included in current master, which are worth mentioning. You can try all bellow mentioned features on our demo server.

Grid editing provides really simple way of editing data, by simply clicking on it while browsing table. Just try it on some table.

Performance suggestions are part of completely reworked server status and can give you valuable information how to tune your server. You can see it on demo server.

Another nice addition to server status page is live monitor, which charts basic server information in real time. Again, try it on demo server (you need to press start for now, this will probably go away soon).

Other big, thought not that fancy change is complete support for routines. This includes stored procedures/functions, triggers and events. For example see routines in sakilla database.

Of course there is much more to mention, like improving of AJAX in lot of places, GIS support.

On the other side, we've also recently decided to remove support for Microsoft Excel import and export as used PHPExcel library seems to suffer some licensing issues, which prevented phpMyAdmin from being included in Fedora. You can still use CSV or OpenDocument formats though.

Filed under: English Phpmyadmin | 0 comments | Flattr this!

by Michal Čihař (michal@cihar.com) at August 11, 2011 12:30 PM

August 08, 2011

Ammar Yasir

GSoC 2011: Week 11

Things worked on this week:
  • Using AJAX to get data row on point click. 
  • Better support for date/time objects
  • Panning feature
Using ajax to get the data row on click reduces the amount of data being passed on to the javascript layer. On data point click the where clause of the point is passed on to the server in request and the data row is returned in response. 

Support for date/time turned out to be rather tricky in Highcharts. The different date/time formats have to be converted into javascript 'date' type to have correct distance between them. Somehow using new Date(dateString) does not produce correct plots. Next I tried code snippet at http://www.mattkruse.com/javascript/date/source.html , which a getDateFromFormat function which return the getTime of the date. So the difference of those getTime() can be a measure of distance between two dates. Will continue on on working on it this week.

Highcharts has an inbuilt zoom feature but not a panning feature. Also, the zoom feature utilizes the mouse click and drag events, so a pan cannot be used with those events. The code snippet at http://jsfiddle.net/HXUmK/4/ provides a method of implementing zoom(mousewheel) and pan(click and drag) manually. Currently I'm trying to integrate it within my code, there are some unresolved issues with use of  setExtremes() functions. 



by Ammar Yasir (noreply@blogger.com) at August 08, 2011 07:38 AM

Tyron Madlener

Week 11 report

This week I have been coding hard on the Advisor system that I planned for a long time. It uses the mysqltuner 2.0 config as a base, though I have added much more information about each rule/recommendation.
Here is an example rule in mysqltuner2.0
Query cache efficiency (%)|||<20|||Qcache_hits/(Com_select+Qcache_hits)*100|||query cache not efficient, consider increasing query_cache_limit.
This is how it looks in the pma version:
rule 'Query cache efficiency (%)' [Com_select + Qcache_hits > 0 && !fired('Query cache disabled')]
Qcache_hits / (Com_select + Qcache_hits) * 100
value < 20
Query cache not running efficiently, it has a low hit rate.
Consider increasing {query_cache_limit}.
The current query cache hit rate of %s% is below 20% | round(value,1)

As you can see, there is now 3 text lines. They are displayed title with 'issue','recommendation' and 'justification'. This way the user can make a more wise decision on how to improve the performance (or ignore the recommendation altogether)

This rule syntax is being parsed by a simple rules engine I have coded this week.

What I made this week:
- Advisor system:
  - Built rules file and rules parser
  - User interface that displays the recommendations
- New status variables "filter" that allows one to display the unformatted values (so one can copy and calculate own perfomance measures)
- Fixed a security issues with last weeks changes and other small improvements

What I will do next week:
- I will need to find a good way of adding i10n to the rules file
- Improve code style, write documentation etc.
- With leftover time, build some of the features from last weeks idea list (week 10 blog report)

by Tyron M (noreply@blogger.com) at August 08, 2011 06:56 AM

Thilanka Kaushalya

AJAXify phpMyAdmin Interface - GSOC 2011 - 11th week

According to the schedule I had to continue with ajaxifying table operations task this week.

Since there was a bug with "Table copy" option which was done last week, Marc asked me to fixed the issue which is currently not reloading the navigation panel after copping the table to a new database. Initially I could not understand why we need a reload on navigation panel, but after the Madhura clarify me why we need it I fixed the issue.

Then I start working with ajaxifyig the other four options in "Table operations". Those are
  • Move table to database
  • Table options
  • Table maintenance
  • Delete data or table.
After discuss with Marc we decided "Move table to database" option do not need ajax behavior, because anyhow we have to redirect to the moved table after moving the table to new database. Also we decided that only "Empty the table(Truncate)" option in the "Delete data or table" section need ajaxification because after delete action there is no need to be in the Table operations of the deleted table.

I started ajaxifing the four actions in Table maintenance section.
  • I added "$("#tbl_maintenance.ajax li").live('click')" ajax action to the fucntions.js file which handles all four ajax click actions in "Table maintenance" section, and get the results of those actions.
  • Then I changed the tbl_operations.php and sql.php files in order to handle the ajax request and response according to that.
Then Marc showed a me a bug of not showing the Msg_type and Msg_txt feature after "Check table option" and I'll fix it next week.

Then I worked with Ajaxify the "Empty the table (Truncate)" option.
  • Since there is some related code for this feature with $("#truncate_tbl_anchor.ajax").live('click')" action in functions.js file I reused that action and changed the logic to show the results using ajax.

Next week I 'll continue with ajaxify the "Table options" and fixing the bug in "Table maintenance".

by Thilanka (noreply@blogger.com) at August 08, 2011 05:38 AM

Madhura Jayaratne

Eleventh week of GSoC

At the beginning of the week I worked on some functionality related to the GIS editor. Earlier I tired to provide the functionality to edit GIS data using the  OpenLayersMaps and it was not a success due to some bugs in the GUI level. As per the instructions of my mentor I revived this effort and the code is in the 'GIS_Editor' branch. I completed the back-end code related to this, but I am still having the same old problems in the GUI level. However the back-end code is working.

Later during the week I looked into the exporting of GIS data into SVG, PDF and PNG formats. I had had a worked on this feature earlier and it was on a working condition. I added the support for labels for these exports and did some small work to make the feature better.

During the next week I'll start the wrapping up work. I will be working on documentation needed, unit test where appropriate, etc, etc.

by Madhura (noreply@blogger.com) at August 08, 2011 02:39 AM

Aris Feryanto

Browse-mode Improvements – Week 11

This week I was working in grid editing feature. I spent a lot of time in writing code to update the where_clause for links in Actions column. It’s in a good progress and hopefully can be done in this week.

Things done this week:

  • Fixed grid editing feature to update where_clause in Actions column (currently works for a table which do not have “update on changes” field)
  • Added configuration to show/hide hint
  • Fixed bug in “recent tables” feature (previously failed on table name or db name containing ‘.’ character)

Things to do next week:

  • Fix more bug when updating where_clause for grid editing feature
  • Remove inline edit feature

by arisferyanto at August 08, 2011 12:59 AM

August 07, 2011

Rouslan Placella

Report for week 11

This week I worked on the new navigation tree for phpMyAdmin's left frame. I wrote two classes: "Node" and "CollapsibleTree". The CollapsibleTree class currently can only generate a tree, group some nodes according to the specified delimiters and render the tree. And it's not even very efficient for the moment. Next week I will move the fetching of data functionality also into the CollapsibleTree class, so that the queries can be optimised before being executed. Also next week I will finish up the rendering of the tree and implement the Light Mode (both with and without Ajax). There are also a few optimisations to be made in the Node class. And then there is a bit of leftover clean up after the old implementation of the navigation. I think that the plan for the coming week is very optimistic, but hopefully I will also manage to implement the pagination for the list of databases :)

by Rouslan Placella (noreply@blogger.com) at August 07, 2011 07:26 PM

August 06, 2011

Piotr Przybylski

Drizzle support for phpMyAdmin – week 11

During this week I worked on Database Synchronize feature. At first, I tested it with my MySQL server and found out that it suffered a lot from latest theme changes because it was using some Status page CSS classes. After fixing it and refactoring source and target table lists to actually be in one table, not in two placed next to each other, I followed to make necessary changes for it to work with Drizzle. Fortunately for me, it worked right away so I just disallowed connections with servers that use different protocol than the loaded database interface can, and added a few variables that can differentiate between regular MySQL and Drizzle in case any problems arise in the future.

This week I am going to a week-long vacation, and when I return I will have a week left to find and fix remaining bugs and maybe look whether Drizzle replication can be somehow supported.

by Crack at August 06, 2011 07:25 PM

August 03, 2011

Dieter Adriaenssens

XFS check

I wanted to check the consistency of the data partition on one of my servers. It is 6.5TB and formatted with XFS, so I ran :

#xfs_check /dev/sdb1

And I got :

xfs_check: out of memory
 
After some searching, it turns out that a lot of memory is needed to perform the xfs_check on a large file system : >6GB and you need to run it on 64bit, to able to address that memory.

My system is a 32-bit with only 4GB, so I would probably not be able to run xfs_check on my system, but there is another way :

#xfs_repair -n /dev/sdb1

This tools tries to repair a XFS filesystem, but with the -n switch no changes are written to the file system, so the effect is quite the same. It still uses a lot of memory if you have a lot of files/inodes on the file system, but 3GB on a 32-bit system should be sufficient.

Of course, if xfs_repair finds a problem, you can still run it without the -n switch, to repair the filesystem.

by ruleant (noreply@blogger.com) at August 03, 2011 01:52 PM

August 01, 2011

Ammar Yasir

GSoC 2011: Week 10

I made a lot of changes to the edit feature this week. Main objective was to avoid replot of charts on edit and to replot only the points which gets changed. Progess this week:
  • Optimizations to edit feature.
  • Edit support when using strings as fields (only replot of chart , query generation remains the same)
  • Minor changes like validations, some bugs.
Also I was working on using ajax to get a selected point's data row, rather than posting the whole data on submission of input criteria. The edit feature also changes accordingly along with some events, so its getting a little complicated. This was in my to-do list of 10th week but it stalled. I'll try to finish it in this week and continue on to work on more optimizations.

by Ammar Yasir (noreply@blogger.com) at August 01, 2011 03:57 AM

Thilanka Kaushalya

AJAXify phpMyAdmin Interface - GSOC 2011 - 10th week

According to my timeline, this week I had to work with ajaxify the options in table operations. Mainly this week I focused on ajaxify two option in the table options. Those options are
  1. Alter order by
  2. Copy table.
For the "Alter order by" option I did following changes to handle the ajax request and the response.
  1. I added the "$("#alterTableOrderby.ajax").<wbr>live('submit')" action to the functions.js file which posts the alterTableOrderby form with ajax post and then return the results without reloading the page.
  2. I modified the tbl_operations.php and tbl_alter.php files in order to handle the ajax request which was sent by the above action.
Now when the user click on the go button "Alter order by" form, it get submit as a ajax request and then show the results of the action to the user without reloading the page.

Then I started working with ajaxify the "Copy table" option in the table operations. I did following changes in order to handle this ajax response.
  1. I added "$("#copyTable.ajax").live('<wbr>submit',)" action to the functions.js file which handles the ajax submission of the copy table form. When the "Switch to copied table" options is selected I continued with the non ajax submit.
  2. Then I modified the tbl_operations.js file and the tbl_move_copy.php file which handles that ajax request.
After doing these modifications now when user copy a table to another database he can do it by reloading the page and if only the user select "Switch to copied table" option only he redirects to the copied table.

Next week I'll continue with ajaxify the remaining options in table operations.

by Thilanka (noreply@blogger.com) at August 01, 2011 01:25 AM

July 31, 2011

Rouslan Placella

Report for week 10

This week had a bad start. On Monday I got food poisoning and was sick for two days. I made up for one of the days that I missed by working on Saturday and will make up for the other day some time later. When I got better, I started to work on the navigation frame. And while I could have just added support for the features that I needed directly on top of the existing code, I thought that it's a bad idea. The current implementation of the navigation is just a big blob of code and piling even more stuff on top of it just doesn't look like a good solution to me. So instead I went through the code and started restructuring it. I reorganised most of the existing code into a singleton class (not yet available in my remote GIT tree). The collapsible tree will go into a singleton class as well and will probably be an almost complete rewrite of the previous implementation. This class will make it easy to generate and handle a collapsible tree with any number of arbitrary items. And will support operations like 'render the whole tree', 'render the children of element x', 'render the tree in a particular state', etc. Having these methods will make it trivial to integrate the ajax functionality, handle browsers without JS and eventually add new types of items to the tree.

Anyway, back to work that I did. At some point during the week I was looking at the JS code for navigation frame and found a bunch of functions that handled frame resizing by saving the navigation width value in a cookie, but I couldn't make sense of this code. Later I found out that this functionality didn't actually work properly in any browser (it kind of worked in Firefox, but even there the logic was flawed), and so I thought that I might as well fix it. And since there was talk on the development mailing list about adding an option to collapse the navigation frame, I thought that I might just throw that in, too. Well, that took two days and the lesson that I learned from this experience is: "frames suck". Some browsers store the width of the frame in some location, others in another; some browsers update this information in one place, while others update it in a another place; some fire up frame related events consistently, others don't; the list goes on... Anyway, the new implementation of the resize handler is poll-driven with a tight inner loop. It gets rid of about a dozen global variables and in favour of just two: one for the cookie handler and one for the actual resize handler.

Here's a preview video that made for this feature:

<object height="390" width="600"><param name="movie" value="http://www.youtube.com/v/o-MFX3i3tQ0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed allowfullscreen="true" allowscriptaccess="always" height="390" src="http://www.youtube.com/v/o-MFX3i3tQ0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" width="600"></embed></object>

Watch it on YouTube: http://www.youtube.com/watch?v=o-MFX3i3tQ0

Next week I'll be working on implementing the PHP class that will handle the collapsible tree for the navigation frame.

by Rouslan Placella (noreply@blogger.com) at July 31, 2011 10:04 PM

Madhura Jayaratne

Tenth week of GSoC

My main task for this week was to implement the 'Function based search' functionality for geometry data. The rationale is that searching for equality or using simple comparison operators is of very less use when it comes to geometry data types. When effectively used with functions defined for geometry types they create powerful search criterion for searching.

I divided these functions mainly into two groups, 'unary functions', i.e. those that take a geometry object as its argument and 'binary functions', i.e. those that two geometry objects as arguments and  test spatial relations between them. On the implementation side, I initially added a 'Function' column for the geometry columns and with that the user is able to perform searched with 'unary functions'. For example the user choosing function ‘Dimention()’, comparison operator ‘<’ and value ‘2’ would add ‘Dimention(`<column_name>`) < 2’ to the where clause.

Later I extended the same concept to binary functions and for those, the geometry object inserted into the value field(in the form of WKT or WKB) is compared with the geometry object in the related column. To make the insertion of geometry objects for comparison easy, I attached the GIS data editor to it, so the insertion is made easy.

During the week I also fixed some of the bugs that arose in the GIS data editor due to multiple row editor being AJAXified. During the next week I will be engaged in my next task, i.e. 'Exporting GIS data into SVG, PDF and Bitmap formats'. A certain amount of work has been done related to this task and I will be completing it during the coming week.

by Madhura (noreply@blogger.com) at July 31, 2011 06:35 PM

Aris Feryanto

Browse-mode Improvements – Week 10

Grid editing get a lot of improvements this week. After some discussion in the mailing list with my mentor, we agree on removing the edit mode and use “click to edit” instead. I also found the user experience is better than before. In this week, not all the planned “to do”s were completed. I will try to finish those things next week.

Things done this week:

  • Removed “edit mode” and use “click to edit”
  • Added grid editing support for SET, ENUM, and TEXT data type
  • Added a configuration to save all edited fields at once
  • Fixed some bugs in grid editing that also appears in inline edit

Things to do next week:

  • Fix more bugs in grid edit
  • add configuration to turn on/off hint (as suggested by Tyron)
  • refactor code in js/makegrid.js, to make it cleaner and easier to read

by arisferyanto at July 31, 2011 05:03 PM