Welcome to Planet openSUSE

This is a feed aggregator that collects what openSUSE contributors are writing in their respective blogs.

To have your blog added to this aggregator, please read the instructions.


Friday
25 July, 2014


face

Road to WaylandWith the Plasma 5.0 release out the door, we can lift our heads a bit and look forward, instead of just looking at what’s directly ahead of us, and make that work by fixing bug after bug. One of the important topics which we have (kind of) excluded from Plasma’s recent 5.0 release is support for Wayland. The reason is that much of the work that has gone into renovating our graphics stack was also needed in preparation for Wayland support in Plasma. In order to support Wayland systems properly, we needed to lift the software stack to Qt5, make X11 dependencies in our underlying libraries, Frameworks 5 optional. This part is pretty much done. We now need to ready support for non-X11 systems in our workspace components, the window manager and compositor, and the workspace shell.

Let’s dig a bit deeper and look at at aspects underlying to and resulting from this transition.

Why Wayland?

The short answer to this question, from a Plasma perspective, is:

  • Xorg lacks modern interfaces and protocols, instead it carries a lot of ballast from the past. This makes it complex and hard to work with.
  • Wayland offers much better graphics support than Xorg, especially in terms of rendering correctness. X11′s asynchronous rendering makes it impossible to be sure about correctness and timeliness of graphics that ends up on screen. Instead, Wayland provides the guarantee that every frame is perfect
  • Security considerations. It is almost impossible to shield applications properly from each other. X11 allows applications to wiretap each other’s input and output. This makes it a security nightmare.

I could go deeply into the history of Xorg, and add lots of technicalities to that story, but instead of giving you a huge swath of text, hop over to Youtube and watch Daniel Stone’s presentation “The Real Story Behind Wayland and X” from last year’s LinuxConf.au, which gives you all the information you need, in a much more entertaining way than I could present it. H-Online also has an interesting background story “Wayland — Beyond X”.

While Xorg is a huge beast that does everything, like input, printing, graphics (in many different flavours), Wayland is limited by design to the use-cases we currently need X for, without the ballast.
With all that in mind, we need to respect our elders and acknowledge Xorg for its important role in the history of graphical Linux, but we also need to look beyond it.

What is Wayland support?

KDE Frameworks 5 apps under Weston

KDE Frameworks 5 apps under Weston

Without communicating our goal, we might think of entirely different things when talking about Wayland support. Will Wayland retire X? I don’t think it will in the near future, the point where we can stop caring for X11-based setups is likely still a number of years away, and I would not be surprised if X11 was still a pretty common thing to find in enterprise setups ten years down the road from now


Thursday
24 July, 2014


face
...It's been a while since I last blog, well it is summer and I am on the run with my work so time is never enough.
I am still playing with my Prusa i3 3D printer and hopefully I am a few steps closer to the end. The last few days I ordered some more materials that I did not had and some that I ordered but turned out to be the wrong parts(yeap that happens too when you are a rookie :P ). The good thing is that nowdays the printer actually looks like a printer, the other good thing is that there are not actually wrong parts, it is just the parts for the next one that I will build :) . I also had some time to read a bit more about the wiring and while waiting for the parts to come I will actually work on assembling my heat bed and the power supply. Maybe I will find the courage to program the arduino, although I am avoiding this like hell since I am not confident enough,yet.
Here are some pictures and you cannot see some of the missing parts :D









Klaas Freitag: Let’s party!

17:10 UTCmember

face

Yesterday, we released ownCloud 7. You might have read that somewhere on the internet – it was widely announced and broadly picked up. If you do not have ownCloud yet, you really should try it now, and if you are one of the people happily using ownCloud for a while, update soon!

In my opinion, ownCloud 7 is a real step ahead. So much work went into it from the brave server guys, and the result is simply impressive: It is fast, beautiful and fully focused on what it is supposed to be and do: File sync and share, even though you still have of course all the other useful stuff like calendaring and such.

Apart from the wellknown features ownCloud 7 also brings some things that you do not see on the first look. Some of these things relate to syncing and as a guy working mainly on the sync client I am especially happy about that: Already with the current released clients you will see a performance win in syncing, because ownCloud 7 handles parallel HTTP requests way better. Moreover, ownCloud 7 sends some interesting information about it’s files, and the next generation of sync clients will for example know which files are shared and their permissions. We are currently working on some exciting stuff on the client side, stay tuned.

Release Party ownCloud 7

That all should be reason enough to celebrate together, because ownCloud is done by all of us in the community.

On Tuesday, august 5th, we will do a Release Party in Nuremberg, Germany. As last time, the Coworkingspace Nürnberg is hosting us. We will start at 18:00.

Everybody who is interested in ownCloud for whatever reason is very welcome to show up. We will probably have a short informal demonstration or two, but of course plenty room for questions, discussions, meet and greet with all kind of FOSS people, some core ownCloud people, nice beer and big fun.

You really should come! And don’t forget to tell your friends, thanks!



face

CHMI changed their webpages, so that old.chmi.cz no longer worked, so I had to adapt nowcast. My first idea was to use radareu.cz, that has nice coverage of whole europe, but pictures are too big and interpolated... and handling them takes time. So I updated it once more, now it supports new format of chmi pictures. But it also means that if you are within EU and want to play with weather nowcasting, you now can... just be warned it is sligtly slow... but very useful, especially in rainy/stormy weather these days.

Now, I don't know about you, but I always forget something when travelling internationally. Like.. power converters, or the fact that target is in different time zone. Is there some tool to warn you about differences between home and target countries? (I'd prefer it offline, for privacy reasons, but...) I started country script, with some data from wikipedia, but it is quite incomplete and would need a lot of help.


face

So I took an old 4GB (IBM) drive for a test. Oops, it sounds wrong while spinning up. Perhaps I need to use two usb cables to get enough power?

Lets take 60GB drive... that one works well. Back to 4GB one. Bad, clicking sounds.

IBM actually used two different kinds of screws, so I can not non-destructively open this one... and they actually made platters out of glass. Noone is going to recover data from this one... and I have about 1000 little pieces of glass to collect.

Next candidate: Seagate Barracuda ATA III ST320414A, 20GB.

Nice, cca 17MB/sec transfer, disk is now full of photos. Data recovery firms say that screw torque matters. I made all of them very loose, then removed them altogether, then found the second hidden screw and then ran the drive open. It worked ok.

Air filter is not actually secured in any way, and I guess I touched the platters with the cover while opening. Interestingly, these heads do not stick to surface, even when manually moved.

Friends do not let friends freeze their hard drives, but this one went into two plastic back and into refrigerator. Have you noticed how the data-recovery firms placed the drive there without humidity protection?

So, any bets if it will be operational after I remove it from the freezer?


face

The news writer from SUSE office snuck into the openSUSE Asia’s trello board and found that they will use an open source voting tool for their upcoming halpevents. Snoek is a voting tool developed during the SUSE Hackweek by Beijing R&D Team, SUSE. Snoek is written in Django and is eagerly seeking out more django developers to add more features to it like OpenID support and richer (picture, link) voting item support.

Source code of snoek can be found at : https://github.com/yifanjiang/snoek
and Yifan has also written a nice https://github.com/yifanjiang/snoek/blob/master/README to get you started.

All that is required is a little django and python knowledge from a fellow Geeko.

As a big “Thank you” for your efforts, the developer will also receive a free tee shirt shipped to his place.


face

I use the Open Build Service to work on openSUSE packages. There is a useful tutorial HERE. Here is a summary of 'osc' commands I find useful:

alias oosc='osc -A https://api.opensuse.org'


Assuming you will be using the openSUSE Build Service, you will need to include the -A option on all the commands shown below. If you set up this alias, you can save a lot of typing.

osc search PKG


Search for a package. You can also use http://software.opensuse.org/ and zypper search PKG is also helpful.

osc meta pkg PRJ PKG -e


If you are project maintainer of PRJ, you can create a package directly using this command, which will throw you into an editor and expect you to set up the package's META file.

osc bco PRJ PKG

osc branch -c PRJ PKG


If you are not a project maintainer of PRJ, you can still work on PKG by branching it to your home project. Since you typically will want to checkout immediately after branching, 'bco' is a handy abbreviation.

osc ar


Add new files, remove disappeared files -- forces the "repository" version into line with the working directory.

osc build REPOSITORY ARCH


Build the package locally -- typically I do this to make sure the package builds before committing it to the server, where it will build again. The REPOSITORY and ARCH can be chosen from the list produced by osc repos

osc vc


After making your changes, edit the changes file. For each release you need to have an entry. Do not edit the changes file yourself: instead, use this command to maintain the changes file "automagically".

osc ci


Commit your changes to the server. Other SVN-like subcommands (like update, status, diff) also work as expected.

osc results


Check what the server is doing. Typically a build will be triggered by your commit. This command lets you see the status.

osc sr


'sr' is short for submitrequest -- this submits your changes to the PROJECT for review and, hopefully, acceptance by the project maintainers. If you're curious who those are, you can run osc maintainer (or osc bugowner)

osc rebuildpac


Sometimes it's desirable to trigger a rebuild on the OBS server.

NOTE ON LICENSING


JFYI: http://spdx.org/licenses/ lists all well known licenses and their original source. This becomes extremely handy if you start packaging.

face

I’m pleased to announce a new 1.21.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit book: Add a tool to automatically remove all unused CSS rules. Useful for books created from templates that can have large numbers of CSS rules that dont match any actual content. Available via Tools->Remove unused CSS.
  • Edit book: Add a tool to split HTML files at multiple locations automatically. To use it, right click in the file and choose ‘Split at multiple locations’. Useful if you want to split at all heading tags or all tags having a certain class and so on.
  • Book polishing: Add an option to automatically remove all unused CSS rules, works the same as the tool for Edit book, above.
  • Driver for ImCoSys imcoV6L
  • Edit book: Allow editing of .plist files as XML

Bug fixes

  • Metadata download: Fix downloading of metadata from Edelweiss not working because of website changes
  • Ebook viewer: Do not override the background color specified in the book if the user has not set a background color in the viewer preferences
  • Edit book: Handle EPUB files that erroneously list the OPF itself in the OPF manifest with an incorrect mime type
  • Edit book: Prevent arrange into folders tool from moving files inside the META-INF folder

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a new 1.20.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit book: Add a new tool to automatically arrange all files in the book into folders based on their type. Access it via Tools->Arrange into folders.
  • Edit book: Add various validity checks for OPF files when running the Check Book tool.
  • Edit book: Add checks for duplicate ids in HTML/OPF/NCX files
  • Edit book: Add checks for filenames containing URL unsafe characters to the Check Book tool
  • Conversion: Allow getting text for entries in the Table of Contents from tag attributes.

Bug fixes

  • AZW3 Output: When converting EPUB files that include an HTML titlepage and no external cover is specified, ensure that the Go to cover action on the Kindle goes to the cover image and not the HTML titlepage.
  • Prevent setting an incorrect value for compression quality in the wireless driver causing an error
  • Show a busy cursor while calibre is working on matching books on the device to books in the library, which can take a while if the user has a lot of books on the device.
  • iTunes driver: Retry automatically a few times when failing to send multiple book to iTunes.
  • HTML Input: Fix UTF-16/32 encoded files that are linked to from the parent file not being properly processed.
  • EPUB Output: Fix splitting of large HTML files removing all child tags from inside tags.
  • Edit book: Fix tab characters not being identified in the lower right corner.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a short update for youtube_dlhelper.

What’s happened?

  • Updated bundle dependency of multi-json to newest version 1.8.4
  • Cleanup
  • Structured the terminal output

face

I’m pleased to announce a new 1.19.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit book: A new tool to insert special characters into the text, available via Edit->Insert special character. Supports all unicode characters (over 60,000 of them). See http://manual.calibre-ebook.com/edit.html#inserting-special-characters
  • Edit book: When searching for text in the editor, center the found text on screen
  • Driver for teXet TB-146SE.
  • Edit book: Show tooltips in the File Browser for ‘special’ files, such as the cover, opf, ncx, etc.
  • Edit book: When checking book, check for entries in the OPF whose mimetype does not match the file extension.

Bug fixes

  • Edit book: Fix marking a file as titlepage not working if the opf does not contain a section.
  • Edit book: Fix errors when working on HTML files that parse as valid XML, but do not have the correct XHTML namespace.
  • Fix typing non-English characters using an input method (key composing) in the author/tags/etc fields in the metadata dialog not working.
  • Edit book: Fix error when merging html files that include a currently opened file and a non-html file is also open
  • Fix unnecessary error popup during shutdown if the wireless device driver is running and mdns de-registration fails.
  • Add L´ and D´ as recognized articles when automatically computing sort strings for French.
  • Edit book: Fix changing mimetypes in the opf file not being detected when closing the opf file or running any automated tool like Check Book

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a new 1.18.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Add an option to control how completion works when editing authors/tags/series/etc.
  • Edit book: Add a check for too large HTML files when running the check book tool.
  • Conversion: Sort the CSS rules in the output stylesheet using a ‘natural’ sort algorithm, so that calibre2 sorts before calibre10.
  • Cybook Orizon driver: Upload cover thumbnails in the correct format and add an option to control what directory books are sent to on the SD card
  • Portable installer: Do not ask the user for confirmation when upgrading an existing installation during an automated install
  • Linux/OS X driver for Trekstor Pyrus LED
  • Driver for Tagus Lux

Bug fixes

  • MOBI Output: When text indent is specified as a percentage in the input document, prevent the generated MOBI from having too large an indent if the user chooses a large output profile like tablet.
  • Edit book: Fix live replacement of entities not working on some non-US keyboard layouts.
  • Fix titlecasing of words not capitalizing the first letter, if the first letter is not an English character.
  • Edit book: Ensure that multiple edit book windows are grouped in a separate group from viewer windows in the Windows 7 taskbar. Also change the icon color to blue to more easily distinguish it from the viewer icon
  • Edit book: Fix a bug in the regex engine that calibre uses that could cause various incorrect results in some special circumstances.
  • Edit book: Replace buggy Qt supplied actions in the context menu for the editor widget with properly implemented ones
  • Book list: Fix sorting on fields that are not viewable as columns not being restored on calibre restart. Also fix sorting on the Title field via the right click menu not being restored.
  • Windows 64bit build: Fix corrupted images in MOBI files causing crash.
  • Edit book: Prettify html in newly created books.
  • AZW3 Input: Handle azw3 files that contain some empty individual HTML files
  • Comic Input: Fix a regression to comic input in 1.15 that could cause some comics to be rendered as black or white pages.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a new 1.17.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Merry Christmas everyone! Early release this week, as I will be travelling.
  • Edit book: Allow drag and drop of images onto the image editor
  • Edit book: Allow import of multiple files at once, via File->Import files into book
  • Edit book: Show the name of the current character to the left of the cursor in the status bar. Can be turned off via Preferences.
  • Edit book: Automatically replace HTML entities as they are typed. This can be turned off in the Preferences.
  • ToC Editor: Allow bulk renaming of items. Simply select the items you want to rename, right click and choose bulk rename. Useful if, for instance, you want to rename all the items to be Chapter 1, Chapter 2 and so on.
  • Edit book: Allow linking of stylesheets into HTML files automatically. Right click on the selected HTML files in the File browser and choose ‘Link stylesheets’ to have the tags for the sheets automatically inserted.
  • Edit book: When deleting files, automatically remove all entries that refer to them from the ToC

Bug fixes

  • ToC Editor: When auto-generating the table of contents from headings or XPath, if an element is at the top of the file, link only to the file instead of to the element.
  • Edit book: When splitting files, name the newly created file with a ‘_split suffix’.
  • Edit book: Fix position syncing incorrect when in HTML files that contain tags with charset encoding declarations over more than a single line
  • Edit book: Automatic correction of font family names not quoting family names with spaces in them if the original, incorrect family name did not have a space.
  • Title casing: Fix presence of some non-English characters or smart punctuation causing all-caps text to not be properly titlecased
  • Edit book: Fix a bug preventing marking an image as cover in a book that previously had no cover
  • Edit book: Fix a typo causing the preferences for which windows occupy which corners to not work
  • Edit book: Fix crash that happens sometimes when deleting multiple files.
  • Edit book: Handle EPUB files which contain opf files with no tags
  • Edit book: Fix deleting a file that is currently open in an editor, not auto-closing the editor
  • DOCX Input: Fix error when converting DOCX file that contains only image based links and no text based links.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations are everytime welcome. Just click on: Donate


face

A new gem

A new gem has started in the world. Youtube_helper is not just another Youtube gem. It’s the helper gem. What it does? The Youtube_dlhelper gem downloads a youtube video from a defined space, creates the needed directories and transcodes the filde from *.m4a to *.mp3. Read the full README for using the gem.

Where is it?

You can find it there: https://github.com/saigkill/youtube_dlhelper (It goes directly to the README).

Ho to use?

Just run it with: youtube_dlhelper.rb YourUrl The new file is shown inside your $Musicfolder/Groupname/Youtube-Music or if you have choosen a Interpret it goes to $Musicfolder/Surname_Firstname/Youtube-Videos.

Have a lot of fun :-)


Sascha Manns: Welcome

08:00 UTCmember

face

Welcome

Hello and welcome to my new Jekyll Bootstrap Page. Because of some Bandwidth problems i moved my blog out to Github.


Sascha Manns: Jekyll Introduction

08:00 UTCmember

face

This Jekyll introduction will outline specifically what Jekyll is and why you would want to use it. Directly following the intro we’ll learn exactly how Jekyll does what it does.

Overview

What is Jekyll?

Jekyll is a parsing engine bundled as a ruby gem used to build static websites from dynamic components such as templates, partials, liquid code, markdown, etc. Jekyll is known as “a simple, blog aware, static site generator”.

Examples

This website is created with Jekyll. Other Jekyll websites.

What does Jekyll Do?

Jekyll is a ruby gem you install on your local system. Once there you can call jekyll --server on a directory and provided that directory is setup in a way jekyll expects, it will do magic stuff like parse markdown/textile files, compute categories, tags, permalinks, and construct your pages from layout templates and partials.

Once parsed, Jekyll stores the result in a self-contained static _site folder. The intention here is that you can serve all contents in this folder statically from a plain static web-server.

You can think of Jekyll as a normalish dynamic blog but rather than parsing content, templates, and tags on each request, Jekyll does this once beforehand and caches the entire website in a folder for serving statically.

Jekyll is Not Blogging Software

Jekyll is a parsing engine.

Jekyll does not come with any content nor does it have any templates or design elements. This is a common source of confusion when getting started. Jekyll does not come with anything you actually use or see on your website - you have to make it.

Why Should I Care?

Jekyll is very minimalistic and very efficient. The most important thing to realize about Jekyll is that it creates a static representation of your website requiring only a static web-server. Traditional dynamic blogs like Wordpress require a database and server-side code. Heavily trafficked dynamic blogs must employ a caching layer that ultimately performs the same job Jekyll sets out to do; serve static content.

Therefore if you like to keep things simple and you prefer the command-line over an admin panel UI then give Jekyll a try.

Developers like Jekyll because we can write content like we write code:

  • Ability to write content in markdown or textile in your favorite text-editor.
  • Ability to write and preview your content via localhost.
  • No internet connection required.
  • Ability to publish via git.
  • Ability to host your blog on a static web-server.
  • Ability to host freely on GitHub Pages.
  • No database required.

How Jekyll Works

The following is a complete but concise outline of exactly how Jekyll works.

Be aware that core concepts are introduced in rapid succession without code examples. This information is not intended to specifically teach you how to do anything, rather it is intended to give you the full picture relative to what is going on in Jekyll-world.

Learning these core concepts should help you avoid common frustrations and ultimately help you better understand the code examples contained throughout Jekyll-Bootstrap.

Initial Setup


Wednesday
23 July, 2014


face

ownCloud 7 I have just published ownCloud 7!

This awesome release brings many new features. Among them, I’m most excited about the server to server sharing.

Server to server sharing is a first step in true federation of data with ownCloud: you can add a folder shared with you from another ownCloud instance into your own. Next step would of course be to also share things like user accounts and data like chat, contacts, calendar and more. These things come with their own challenges and we’re not there yet, but if you want to help work on it – join us for the ownCloud Contributor Conference in Berlin next month!

A close runner-up in terms of excitement for me are the improvements to ownCloud Documents – real-time document editing directly on your ownCloud! We have been updating this through the 6.0.x series so the only ‘unique’ ownCloud 7 feature is the support for transparently converting MS Word documents, but that is a feature that makes Documents many times more useful!

There are many more features, you can find more details on the ownCloud website. The official announcement blog post is here.

A big THANK YOU

This would not have been possible without the hard work of the ownCloud community, so a big thank-you goes out to everybody who contributed! We have a large team of almost 100 regular contributors, making ownCloud one of the largest Open Source projects and that makes me proud.

Of course we have a lot of work to do: revelations of companies and governments spying on people keep coming out and our work is crucial to protect our privacy for the future. If you want to help out with this important work, consider contributing to ownCloud. We can use help in many areas, not just coding. Translation, marketing and design are all important for the success of ownCloud!

The release of ownCloud 7 is not only the conclusion of a lot of hard work by the ownCloud community, but also a new beginning! Not only will we release updates to this release, fixing issues and adding translations, but the community now also starts to update the numerous ownCloud apps to ownCloud 7.

Expect more from us. Now, go, install ownCloud 7 and let me know what you think of it!


face

Want a custom map for GUADEC 2014?

Here’s a map I made that shows the venue, the suggested hotels, transit ports (airport/train station), vegetarian & veggie-friendly restaurants, and a few sights that look interesting.

I made this with Google Map Engine, exported to KML, and also changed to GeoJSON and GPX.

If you want an offline map on an Android phone, I suggest opening up the KML file with Maps.Me (proprietary OpenStreeMap-based app, but nice) or the GPX on OSMand (open source and powerful, but really clunky).

You can also use the Google Maps Engine version with Google Maps Engine on your Android phone, but it doesn’t really support offline mode all so well, so it’s frustratingly unreliable at best. (But it does have pretty icons!)

See you at GUADEC!


face

For more than 10 years, PHP core developers repeatedly raised the topic of providing a formal language specification for PHP. Now a team of facebook employees has written such a specification. The spec document is currently only available as a preview chapter a preview chapter . PHP veteran Sara Golemon announced on the “PHP internals” list that the full document will be ready for O’Reilly’s OSCON 2014. Sara Golemon published the standard book on “Extending and Embedding PHP” some years ago and now works for Facebook’s own PHP implementation HHVM. The PHP spec defines PHP version 5.6 in about 200 pages and contains all the odd and obscure quirks of the language core. Facebook’s own HHVM aims to be as close to the spec as possible. Currently, PHP developers discuss how amending the spec can become a mandatory part of the language development process. Though some are sceptic that all developers will embrace the change in the process, everybody on the list was happy to have the new document.

Software Architect Stas Malyshev:

Thank you Sara and Facebook team for doing something we’ve been talking
about for more than a decade and before that nobody actually attempting
to do. I think it is a great development and I hope to see the first
version soon.

http://dl.hhvm.com/resources/PHPSpec-SneakPeak.pdf


Monday
21 July, 2014


face

The first openSUSE.Asia Summit will be held in Beijing, China in Oct, 2014. However, no Summit or Conference is successful without a symbol. The openSUSE Asia Summit organizing team is organizing a logo design contest. The best logo will be awarded with a special super secret Geeko Prize. The logo will be used for all promotional and marketing activities for the summit.

The Rules of the Contest are pretty simple :12_1vs13_1

  1. We will accept only SVG format for original design. Both color and monochrome(black and white) version are required.
  2. The elements of your design should reflect the openSUSE community in Asia.
  3. Please note that there are some things should not be used in your design:
    • No brand names or trademarks of any kind.
    • No illustrations some may consider inappropriate, offensive, hateful, tortuous, defamatory, slanderous or libelous.
    • No sexually explicit or provocative images.
    • No images of weapons or violence.
    • No alcohol, tobacco, or drug use imagery.
    • No designs which promotes bigotry, racism, hatred or harm against groups or individuals; or promotes discrimination based on race, gender, religion, nationality, disability, sexual orientation or age.
    • No religious, political, or nationalist imagery.
  4. Your art work should comply with “openSUSE Project Trademark Guidelines” published at: https://en.opensuse.org/File:OpenSUSE_Trademark_Guidelines.pdf
  5. You should also agree that the openSUSE community have right to interpret the usage of the artwork.
  6. All your artwork will be licensed under CC-BY-SA 3.0.

A few simple guidelines can be found at:

Please send your design to opensuse.asia@gmail.com directly. It should contain the following:

  1. Vector file of the design in attachement, with svg format ONLY.
  2. Bitmap of design in attachment – image size: 256*256px at least. Format: png or jpg. Less than 512KB.
  3. Your name.
  4. Where are you working/studying now. (optional)
  5. Your phone number. (optional)

The contest is open from now until Aug 18, 2014. After that, the openSUSE.Asia team will filter all submitted designs and put the ones which meet the requirements to the website for voting.

Note:

  1. The final decision will be made by openSUSE.Asia Summit Committee. Please understand that the highest vote score of the design may not be designated as the final winner.
  2. To create your artwork, we recommend to use Inkscape, which is a powerful vector graphics tool for all kinds of design. It’s free and open sourced.
  3. The article has been updated after discussion with openSUSE Asia team regarding entry rules.

face

When we released SUSE Manager 1.2 back in 2011, one of the first internal components we open-sourced was our internal testsuite and I have written a bit about it before. Our process was from the beginning completely automated to the extreme. If you do a git commit, you can expect the installable .iso file with the bootable SUSE Manager appliance to appear in a folder after some time. Every couple of hours, this .iso is auto-installed in a reference server and reference client servers, which we use to quickly checkout “things”, and additionally, it is installed on a server, where a list of hundred of tests is performed using a human description of the features, and executed in a real Web Browser.

SUSE Manager Continuous Integration

We could not do this without a bunch of great technologies and products: git and github, Jenkins, where we pull the git repositories and build tarballs + rpm spec files. The Open Build Service, where we submit all the tarballs + rpm .spec files and they get built together as a project and later thanks to the KIWI technology inside the Build Service, turned into an appliance. KVM and libvirt, which we use to run the latest version of our product, and then of course Cucumber, which allows us to describe features in a high-level language, and then implement it to be run on Firefox using WebDriver. But recently we have added another set of features to the testsuite: Security regressions. It was Victor, one of our security engineers, who approached us to talk about using OWASP ZAP to find vulnerabilities and harden the product (his presentation). The project describes itself as:

The Zed Attack Proxy (ZAP) is an easy-to-use, integrated penetration-testing tool. It locates vulnerabilities in web applications, and helps you build secure apps. Designed for use by people with a wide range of security experience, it’s also suited for developers and functional testers who are new to penetration testing. With its automated scanner and powerful REST API, ZAP fits seamlessly into your continuous integration environment, allowing you to automate the finding of common issues while you’re still in development.

As soon as he explained how it worked: the passive tests used a proxy, the pieces of the puzzle clicked: we could run the whole testsuite through the proxy, and add the results analysis as part of one of the last steps of the tests. Those tools produce lot of false positives, so we could keep a “baseline” or “ignore list” and still get the testsuite to fail when new vulnerabilities that we haven’t analysed pop up. Integrating it was straightforward. We packaged the ZAP suite as an rpm that gets installed in the machine that is deployed to run the testsuite against the product. The testsuite code is mostly ruby, so we used the owasp_zap gem for which Victor himself is the author. The testsuite starts the proxy, configures Firefox to go through it and run all the tests. There is an optional step


Benjamin Weber: Tuples in Java

06:42 UTCmember

face

The absence of tuples in Java is often bemoaned. Tuples are collections of a variety of types. They might look like (“benji”,8,”weber”) – a 3-tuple of a string, a number, and another string. People often wish to use tuples to return more than one value from a method.

Often this is a smell that we need to create a domain type that is more meaningful than a tuple, but in some cases tuples are actually the best tool for the job.

We can pretty easily create our own tuple types, and now that we have Lambdas we can consume them pretty easily as well. There is a little unnecessary verbosity left over from type signatures, but we can avoid it in most cases.

If we want to return a tuple from a method, by statically importing an “tuple” method that is overloaded for each arity of tuple we can do

static TriTuple<String, Integer, String> me() {
    return tuple("benji",9001,"weber");
}

Other than the return type of the method it is fairly concise.

On the consuming side it would be nice to be able to use helpful names for each field in the tuple, rather than the ._1() or .one() accessors that are used in many tuple implementations.

This is easily realised thanks to lambdas. We can simply define a map method on the tuple that accepts a function with the same arity of the tuple, to transform the tuple into something else.

Using the above method now becomes

String name = me()
    .map((firstname, favouriteNo, surname) -> firstname + " " + surname);
 
assertEquals("benji weber", name);

We can even throw checked exceptions on the consuming side if we allow our map method to accept functions that throw exceptions.

String name = me()
    .map((firstname, favouriteNo, surname) -> {
        if (favouriteNo > 9000) throw new NumberTooBigException();
        return firstname;
    });

Of course we’d also like identical tuples to be equal to each other so that this is true.

assertEquals(tuple("hello","world"), tuple("hello", "world"));

The implementation looks like this, re-using the value-object pattern I described previously

public interface Tuple {
    //...
    static <A,B,C> TriTuple<A,B,C> tuple(A a, B b, C c) {
        return TriTuple.of(a, b, c);
    }
    //...
}
 
public interface TriTuple<A,B,C> {
    A one();
    B two();
    C three();
    static <A,B,C> TriTuple<A,B,C> of(A a, B b, C c) {
        abstract class TriTupleValue extends Value<TriTuple<A,B,C>> implements TriTuple<A,B,C> {}
        return new TriTupleValue() {
            public A one() { return a; }
            public B two() { return b; }
            public C three() { return c; }
        }.using(TriTuple::one, TriTuple::two, TriTuple::three);
    }
 
    default <R,E extends Exception> R map(ExceptionalTriFunction<A, B, C, R, E> f) throws E {
        return f.apply(one(),two(),three());
    }
 
    default <E extends Exception> void consume(ExceptionalTriConsumer<A,B,C,E> consumer) throws E {
        consumer.accept(one(), two(), three());
    }
}

Browse the full code on Github


face

Can you afford not to do continuous deployment?

Continuous deployment is the practice of regularly (more than daily) deploying updated software to production.

Arguments in favour continuous deployment often focus on how it enables us to continually, regularly, and rapidly deliver value to the business, allowing us to move fast. It’s also often discussed how it reduces release-risk by making deployments an everyday event – with smaller, less risky changes, which are fully automated.

I want to consider another reason

Unforeseen Production Issues

It can be tempting to reduce the frequency of deployments in response to risk. If a deployment with a bug can result in losing a significant amount of money or catastrophic reputation damage, it’s tempting to shy away from the risk and do it less often. Why not plan to release once a month instead of every day? Then we’re only taking the risk monthly.

Let’s leave aside the many reasons why doing things less often is unlikely to reduce the risk.

There will always be things that can break your system in production that are outside your control, and are unlikely to be caught by your pre-deployment testing. If you hit one of these issues then you will need to perform a deployment to fix the issue.

Time-sensitive Bugs

How often do we run into bugs in software due to failing to anticipate some detail of time and dates. We hear stories of systems breaking on 29/02 nearly every leap year. Have you anticipated backwards time corrections from NTP? Are you sure you handle leap-seconds? What about every framework and third party service you are using?

Yes, most of these can be tested for in advance with sufficiently rigorous testing, but we always miss test cases.

Time means that we cannot be sure that software that worked when it was deployed will continue to work.

Capacity Problems

If you production system is overloaded due to unforeseen bottlenecks you may need to fix them and re-deploy. Even if you do capacity planning you may find the software needs to scale in ways that you did not anticipate when you wrote your capacity tests.

When you find an unexpected bottleneck in a production system, you’re going to need to make a change and deploy. How quickly depends on how much early warning your monitoring software gave you.

Third Party dependencies

That service that you depend on goes down for an extended period of time, suddenly you need to change your system to not rely on it.

Infrastructure

Do you handle all the infrastructure related issues that can go wrong? What happens if DNS is intermittently returning incorrect results? What if there’s a routing problem between two services in your system?

Third Party Influence

“Noisy Neighbours” in virtualised or shared hosting. Third party JavaScript in your page overwriting your variables or event listeners. In most environments, you can be affected by others over whom you have no control.

Response

Monitor Monitor Monitor

We


Sunday
20 July, 2014


face

Here is updated openSUSE-Edu-li-f-e-gnome-classic iso, this update include GNOME 3.12, official openSUSE updates till date, and it brings back Sugar.

Download ISO | MD5 | Alternate download and mirrors

Previous release announcement.


Friday
18 July, 2014


Alexander Naumov: Perl party :)

13:19 UTCmember

face
#!/usr/bin/perl

    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';

> perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

In openSUSE 13.1 we have perl interpreter version 5.18.1. This script will not work there :(

Eval-group not allowed at runtime, use re ‘eval’ in regex m/%s/

(F) Perl tried to compile a regular expression containing the (?{ … }) zero-width assertion at run time, as it would when the pattern contains interpolated values. Since that is a security risk, it is not allowed. If you insist, you may still do this by using the re ‘eval’ pragma or by explicitly building the pattern from an interpolated string at run time and using that in an eval(). See (?{ code }) in perlre.

> cat /etc/SuSE-release | grep VERSION
VERSION = 13.1

> rpm -qa perl
perl-5.18.1-2.1.11.x86_64

The implementation of this feature was radically overhauled for the 5.18.0 release, and its behaviour in earlier versions of perl was much buggier, especially in relation to parsing, lexical vars, scoping, recursion and reentrancy.



face

Yesterday, my Moto G got an Official update to Android 4.4.4. Yeah!
Unfortunately, it did not work: After downloading the update, the phone went into a boot loop, because CWM 6.0.4.6 (which I had installed in order to root the device) cannot flash the update. The phone then boots up, just to shut reboot almost immediately into recovery to try again.
To get out of this boot loop, I manually entered recovery and wiped the "cache" partition.
I retried with the latest CWM 6.0.4.7, this also did not work.
So I had to get the original stock recovery image for the Moto G and flash that. I did not easily find it with a web search, so in the end I downloaded the matching stock SBF image for my installed firmware (in my case "Blur_Version.176.44.1.falcon_umts.Retail.en.DE") from the Moto G firmware page on droid-developers.org, looked into the zip file and found that there is a "recovery.img" in the archive.

Now everything was easy: boot the phone into fastboot mode (power on + volume down), then

fastboot erase recovery
fastboot flash recovery recovery.img
reboot, once the phone is booted select "install system update" from the notification, stock recovery boots and installs the update, done.
I did not even lose root access, so I kept the stock recovery for now.
Later on I checked the md5sum of the recovery.img I flashed and of the recovery partition on the phone and they are identical, so the 4.4.4 update did not flash a new recovery for me. I'll keep the old one around in case I need it again.

Sascha Manns: Blog moved

05:00 UTCmember

face

This blog has moved. You can find it now there.


face

calibre

I’m pleased to announce a new 1.35.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit Book: Redesign the syntax highlighter to improve performance for large documents and extended editing sessions.
  • Edit book: Make cursor movement smooth by not highlighting matching tags while the cursor is moving. Only match highlighting tags if the cursor stays still for a time.
  • Spellcheck dialog: Indicate whether a word is ignored in the Misspelled column
  • Spellcheck dialog: Pressing Ctrl+C on the words list copies only selected words, regardless of current cell
  • Add a copy to clipboard action to the context menu for the spell check dialog
  • Edit book: Fix save button incorrectly disabled after a failed save

Bug fixes

  • Edit Book: Fix an error when merging CSS stylesheets that contain @charset rules
  • Edit book: Fix extra invalid entries being generated in the manifest when editing an AZW3 file that has no images.
  • Edit book: Fix a hang when editing an HTML or XML file with text of the form Fix regression that prevented the ebook editor from starting on linux systems with locale set to ‘C’
  • DOCX Input: Fix formatting of the generated Index when the index is complex, i.e. with lots of references to the same item, multiple level of sub-items, etc.
  • Smarten punctuation: Fix a double quote preceded by a hyphen at the end of a sentence (before the start of the next tag) being converted into an opening quote instead of closing quote.
  • News download: Fix very long URLs for links to pages causing errors on windows because of max path length restrictions.
  • Edit book: Fix saved search dialog causing high CPU usage
  • Edit book: Fix importing of Lithuanian dictionary from OpenOffice, that does not specify a country code.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

calibre

I’m pleased to announce a new 1.27.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • An option to add multiple books from inside a ZIP or RAR file. Right click the Add Books button and choose ‘Add multiple books from archive’.
  • Database backend: Make the database backend more robust when the calibre library is placed on flaky filesystems. Now when an I/O error occurs while writing to the database, the connection to the database is closed and re-opened and the operation is retried.
  • DJVU Input: Speedup extraction of text from DJVU files by implementing the BZZ decoder algorithm in C

Bug fixes

  • MOBI Input: Fix empty tags not being handled correctly in rare cases when the markup is bad enough to be parsed only using the fallback HTML parser.
  • Edit book: Fix column number of cursor shown in the bottom right being one less than it should be.
  • Edit book: Fix names for non-BMP unicode character (Such as emoticons) not being displayed in the lower right corner. Also allow these characters to be searched for by name in the Insert special character tool.
  • Do not show system tray notification popups while analyzing books on device, as they can be slow on systems that display multiple messages serially instead of replacing the last message
  • Linux installer script: Do not use the filesystem to pass the downloaded tarball to tar as it is possible for malicious code running on the users computer to alter the download file between signature verification and calling tar to extract the files.
  • DJVU Input: When extracting embedded txt from TXTz sections in DJVU files, fix incorrect extraction of txt when the djvutxt external program is not present.
  • Edit Book: Fix import HTML file as new book not working on OS X
  • Wireless device driver: Fix a regression that prevented it form working with the Calibre Sync Android app.
  • Fix a regression in 1.26 that caused width and height attributes on tags to generate CSS width and height properties without a ‘px’ suffix
  • Linux binary installer: Fix an error when using proxies and python 3 with the new installer script
  • Edit book: When exporting files, fill the choose filename popup with the name of the file being exported as the default name
  • Make the new Linux installer script compatible with python 2.6.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

calibre

I’m pleased to announce a new 1.26.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit Book: Allow direct importing of HTML or DOCX files as new books without doing a full conversion. Use File->Import HTML or DOCX to import a file as a new EPUB book with minimal changes from the original.
  • Linux binary installer: Various improvements to the binary installer. It now creates an un-installer (calibre-uninstall) that will remove all files created by the installer. It also no longer asks for the installation directory. If you wish to change that, you need to specify it in the installation command itself. Also the installer is now downloaded securely via HTTPS from github and verifies the signature of the installed files. Finally, it can be used to create an isolated install, that only makes changes to files in the installation directory and does not require root privileges.
  • Metadata download: Add an option to merge the downloaded comments into existing comments, instead of overwriting (Preferences->Metadata download).
  • Edit book: Add an option to automatically beautify individual files whenever they are opened for editing. Look under ‘Editor Settings’ in the Edit Book Preferences.
  • Bulk metadata download: When reviewing downloaded metadata allow hiding the controls on the comments box by right clicking in the comments area. Useful on smaller screens.
  • E-book viewer: When displaying metadata for the book, also display custom column metadata

Bug fixes

  • Smarten punctuation: Correct handling for decade abbreviations like ’60s and measurements in feet and inches like 1’ 2”.
  • EPUB Output: If the output profile is set to one of the Nook profiles, do not use shorthand CSS properties as the Nook cannot handle them.
  • Conversion: Fix incorrect CSS being generated when converting files that have tags with width or height attributes that contain fractional numbers.
  • Edit Book: When editing EPUB files, and a file is added in META-INF/ do not automatically add it to the manifest. Also do not warn about unmanifested files inside META-INF/ since a few vendors (Apple) require non standard files in that location.
  • Fix Book details popup window not being updated when editing metadata in the main window
  • Edit book: Fix editor not marking the book as modified when doing a Replace All that does not affect any currently open files.
  • Windows: Use a separate worker process to move files to the recycle bin. Fixes the problem of the recycle bin icon not being updated when deleting books into an empty recycle bin. Also avoids the overhead of launching a new, short-lived worker process for every delete.
  • calibredb: When deleting books/formats wait for deleted files to be moved to recycle bin, before quitting
  • RTF Output: Fix invalid RTF being produced when the text contains a double backslash.
  • Edit book: Fix option to disable showing the character before cursor not working
  • Get Books: Update various store plugins to account for changes to the store websites
  • Fix virtual library names with ampersands in them not being displayed

Older blog entries ->