buff.ly/11ahUlK (http://t.co/jQeuELQE)#Linux (https://twitter.com/search/%23Linux)#Chrome (https://twitter.com/search/%23Chrome)
- Amazon’s top selling laptop doesn’t run Windows or Mac OS, it runs Linux
sjvn (https://twitter.com/sjvn)— sjvn (@sjvn) January 8, 2013 (https://twitter.com/sjvn/status/288729421416898560)
- by @
(https://opensuse.fi/keskustelu/proxy.php?request=http%3A%2F%2Fnews.opensuse.org%2Fwp-content%2Fuploads%2F2013%2F10%2F468x60-300x38.jpg&hash=d8a914890a47b41598c8bfa81cb2c184605e5b17) (http://en.opensuse.org/File%3A468x60.jpg) | 468×60 (http://en.opensuse.org/File%3A468x60.jpg) |
(https://opensuse.fi/keskustelu/proxy.php?request=http%3A%2F%2Fnews.opensuse.org%2Fwp-content%2Fuploads%2F2013%2F10%2F728x90-300x37.png&hash=f18aee057608c7313dad35de18f53847671dad11) (https://en.opensuse.org/File%3A728x90.jpg) | 728×90 (http://en.opensuse.org/File%3A728x90.jpg) |
(https://opensuse.fi/keskustelu/proxy.php?request=http%3A%2F%2Fnews.opensuse.org%2Fwp-content%2Fuploads%2F2013%2F10%2F120x90.jpg&hash=7b1a14567a6354844b7415488e78e070947daa6f) (https://en.opensuse.org/File%3A120x90.jpg) | 120×90 (http://en.opensuse.org/File%3A120x90.jpg) |
(https://opensuse.fi/keskustelu/proxy.php?request=http%3A%2F%2Fnews.opensuse.org%2Fwp-content%2Fuploads%2F2013%2F10%2F125x125.jpg&hash=568d9894220bcae4f65db1a6f4dcc9f893aa0231) (https://en.opensuse.org/File%3A125x125.jpg) | 125×125 (http://en.opensuse.org/File%3A125x125.jpg) |
It was a dark night, wind howling through the forest… Somewhere far away, a fire was burning and the smell …The openSUSE 13.1 (http://en.opensuse.org/Portal%3A13.1) release is planned for November (https://en.opensuse.org/openSUSE%3ARoadmap). In preparation, we today announce the availability of the first Release Candidate on software.opensuse.org (http://software.opensuse.org/developer). Grab one of the images and help us test!
…
Ok, forget that. RC1 is here, so stop watching (http://www.hbo.com/game-of-thrones) and start testing!
Spot | Name |
1 | Raymond Wooninck |
2 | Stephan Kulow |
3 | Hrvoje Senjan |
4 | Dominique Leuenberger |
5 | Sascha Peilicke |
6 | Dirk Mueller |
7 | Michal Vyskocil |
8 | Matthias Mailänder |
9 | Denisart Benjamin |
10 | Richard Brown |
“Specification, instead of dumbing down onto the lowest common denominator“
“If you choose to develop 3D tools to be easy to learn, you will make decisions to sacrifice speed and ease of use for frequent users. You will have to narrow down to a UI that’s optimal for generic (beginner) use cases more than for users who want to handle complexity and who have time for quality.”This is not only true for advanced 3D modeling applications but many more. Once you sit behind a desktop for 6 or 8 hours a day you care about having an efficient workflow so you can get your work done as quickly as possible. This requires a level of flexibility and configurability Plasma Desktop can uniquely offer. Adapting and providing more options to how the user works instead of forcing him/her in a fixed workflow is where KDE software excels at. Of course, ease of use and the flexibility required for efficient working are not always at odds and the KDE team is continuing to look for ways of making things BOTH easier and faster.
“We’re proud of this release and of all those who worked on it. With a steady increase in contributors there was a lot of hard work put in by so many people from around the globe. Without all these contributors, initiatives like support for ARM would not be possible and we’re very thankful for their input.”– said openSUSE Board member Andrew Wafaa.
“The openSUSE community has again done an amazing job. There was an incredible final testing- and bug fixing push over community channels the weeks before the release. we at SUSE are proud of being part of such an innovative team of technology enthusiasts.”– said Ralf Flaxa, VP of engineering at SUSE
Eli kannattaako nyt miten toimia ja huolestua?No pahimmassa tapauksessa rupea tulemaan spämmiä siihen maili osoitteseen jolla tonne opensuse.org on rekisteröitynyt. Eli ei tuo nyt kauhean vakavaa ole varsinkin jos käytössä sellainen maili osoite jossa hyvät spämmisuodatukset.
Bodega is a store for digital stuff. In fancy words: it creates a catalog of metadata which represents digital assets.The most important thing is of course the ‘digital asset’ term. That can be anything. For example, applications. Applications can be self contained – think how android does its APK files. Of course, things on Linux are often more complicated. Apache isn’t exactly a self-contained thing. And look further – perl, php, ruby, they all have their own addons like gems that need managing. Generalizing further, there are manuals. And books in general. Music, movies, pictures, you can go on.
What if you can have one place where you can get a book, game, applications, isn’t that nice? That is what Bodega is.(https://news.opensuse.org/wp-content/uploads/2014/03/Bodega_MainScreen-300x235.png) (https://news.opensuse.org/wp-content/uploads/2014/03/Bodega_MainScreen.png)
Most Linux solutions like Appstream assume their audience are users who play Angry Birds and use spreadsheets. Fair enough. Bodega takes a different approach and is far more ambitious.Bodega has all the meta data in one place and offers ‘stores’ which are views on that data. That means you can have a software developer store, for example listing all languages and their addons separate; and a server section etc. And a separate UI for the angry-bird-and-spreadsheet crowd. All from the same bodega system, filtered by tags (not static categories!).
Take the 440.000 users of openSUSE. That would be a minimal amount of sales… The top-10 of paid apps in ubuntu makes less than a $100 per month of sales. Not really worth the effort. But if we could aggregate the sales between distributions, it would become relevant for third-party developers. Bodega as a cross-distribution is important!And Bodega is useful for people outside of Linux. You can have your store on your own website so it is realistically possible for a independent author to sell their books in a bodega instance on their own website and never even SEE Linux. Yet the openSUSE users can get the books and benefit from the larger ecosystem…
The beauty of it is that it is all Free and Open Source Software, front and back. You can self-host all you want.How do Bodega and OBS relate? (https://news.opensuse.org/wp-content/uploads/2014/03/Bodega_Preview-300x230.png) (https://news.opensuse.org/wp-content/uploads/2014/03/Bodega_Preview.png)
There is work to be done to include all openSUSE Software in Bodega. The store can use a little work too, but is based on QML which makes it very easy to improve. If you’re interested in helping out, let us know!You can contact Aaron on IRC as aseigo in the #plasma active channel on Freenode (http://opensuse.fi/keskustelu/irc:#active@freenode.net), ping him on Google+ (https://plus.google.com/+AaronSeigo/posts) or shoot him a mail on aseigo on the KDE.org servers.
openSUSE Edu Li-f-e MATE is a surprise addition to the educational edition of the award winning and widely used openSUSE Linux operating system. The MATE desktop environment will provide for a faster working environment suitable for classroom use.
classic is so much better than standard gnome i wonder why it is not standardBTW: openSUSE Education releases always contain the latest official openSUSE updates and other cool stuff, so you should be able to get an up-to date live system up and running in a few seconds/minutes (depending on your hardware) – which can also be installed on your local hard disk with just a few mouse clicks. Just click on the “Live-Install” icon on the desktop.
“With this new openSUSE development model, users get the latest free software packages without waiting for the next release”said Richard Brown, openSUSE board chair. He continues
With a daily fresh Factory distribution making it easier for those who want to preview and test, we hope to see more users and contributors, leading to faster fixes and even higher quality. Factory is critical as it provides the base technology for openSUSE and SUSE Linux Enterprise, which is used by tens of thousands of organizations around the world.”Get it while is hot! So there is no excuse not to give Factory a try (http://en.opensuse.org/openSUSE%3AFactory_installation) and provide feedback or, if you are not so interested in living on the edge, to help spreading the word: there is a new (old) kid on the Linux Distributions block: openSUSE Factory!
man zypper > man.txtWhat I did here, is I wanted a man page for zypper. But I wanted it in a text file, so I can easily access the results in case I need them (asking for help on the forums, IRC, f.ex.). So what this command did is that it saved the output of man zypper to man.txt in my home folder, which you can see here, opened in gedit (click to enlarge):
sort < man.txt
ls – l | lessBy using this'| less' trick, you can make any command have scrolling output.
def get_registrations_per_week result = [] reg = registrations.group(:week).count result = calculate_items_per_week(21, 6, reg) result endWe query the database for all registrations, group them by week and then count them. As you can see :week is a database column, this was nessecary to make this query database independent.
def calculate_items_per_week(start_week, weeks, hash) # Insert zero if key not in hash (start_week..(start_week + weeks)).each do |key| if !hash[key] hash[key] = 0 end end result = hash.sort.to_h result = hash.values # Cumulate the values sum = 0 result.map { |x| sum += x } endSo in the end if I have four registrations in week 23, six registrations in week 25 and two registrations in week 26 and my registration period started in week 21 the result would be:
[0, 0, 4, 4, 10, 13]That’s a nice dataset to show in a line graph!
def get_submissions_data result = {} result = get_events_per_week_by_state start_week = call_for_papers.start_week end_week = end_date.strftime('%W').to_i weeks = weeks(start_week, end_week) result.each do |state, values| if state == 'Submitted' result['Submitted'] = pad_array_left_cumulative(start_week, values) else result[state] = pad_array_left_not_cumulative(start_week, values) end end result['Weeks'] = weeks > 0 ? (1..weeks).to_a : 0 result endAt first I fetch a hash with the submissions per week for each state. Therefore I implemented the helper method
get_events_per_week_by_statewhich selects the values from the database and returns a result that looks something like this:
{ 'Submitted' => {22 => 1, 24 => 2}, 'Confirmed' => {23 => 1, 25 => 2}, 'Unconfirmed' => {22 => 1, 24 => 2} }We only keep in account proposals that are submitted between the call for papers start and the end of the conference! The next step is similar to the registrations over time with one difference: We just want to cumulate the values for submitted proposals and not for the other states. Let me explain that a little bit more. To get the submitted proposals we can do a simple database query (it’s very similiar to registrations over time) but for the other states we have to take a snapshot at the end of each week! Because of that it’s not necessary to cumulate the values! Last but not least I add the weeks (the x-axis) to the result hash. The result for the example above would then simple looks like this:
{ 'Submitted' => [0, 1, 1, 3, 3], 'Confirmed' => [0, 0. 1, 0, 2], 'Unconfirmed' => [0, 1, 0, 2, 0], 'Weeks' => [1, 2, 3, 4, 5] }(https://news.opensuse.org/wp-content/uploads/2014/07/48318522.png)
def tracks_distribution(state = nil) if state tracks_grouped = events.where('state = ?', state).group(:track_id) else tracks_grouped = events.group(:track_id) end calculate_track_distribution_hash(tracks_grouped, tracks_counted) endAs you can see in the image above, we have two different tabs for this feature. The first tab shows the conference programm for all submitted proposal no matter in which state they are (e.g. submitted or rejected) and the second tab shows how the program would look only for the confirmed proposals! To meet this requirement, our function is generic: If you just call
tracks_distributionyou will get the information for all proposals and if you call
tracks_distribution(:confirmed)(or any other state) you will get the information just for this state.
def calculate_track_distribution_hash(tracks_grouped, tracks_counter) result = {} tracks_grouped.each do |event| if event.track result[event.track.name] = { 'value' => tracks_counter[event.track_id], 'color' => event.track.color } end end result endThe function
calculate_track_distribution_hashthen simply assigns each track the amount of proposals and the associated hex color. The result would simple look like this:
{ 'Workshop' => { 'value' => 10, 'color' => '#00FF00'}Show, don’t tell In the end, if you plug all of this together, we ended up with a nice dashboard for conference organizers.
rwx = 111And to see how it looks in binary:
rw- = 110
etc.
rwx = 111 —> in binary = 7Now, if we would like to have a file with read, write and executing permissions for the file owner and for the group owner of the file, but make it unavailable to all other users, we do:
rw- = 110 —> in binary = 6
r-x = 101 —> in binary = 5
r– = 100 —> in binary = 4
chmod 770 example_file…where example_file is any file you’d like to try this command on. So, you always have to enter three separate digits, for three separate groups known already from our second lesson. The same can be done for directories.
suand type your superuser password, and you’re in. However, a word of warning: don’t remember to log out and use it for a short period of time.
sudo zypper in goodiegoodieChanging file and group ownership To change the owner of the file, you have to run chown as a superuser. For example, if I’d want to change ownership from ‘nenad’ to ‘suse’, I do it this way:
suI can also accomplish the same with changing group ownership, but with a slightly different command chgrp. Easy peasy:
[enter password]
chown suse example_file
chgrp suse_group example_file…and that’s it.
def get_progress numerator = 0 if unit == Goal.units[:submissions] numerator = conference.events.where('created_at < ?', due_date).count elsif unit == Goal.units[:registrations] numerator = conference.registrations.where('created_at < ?', due_date).count elsif unit == Goal.units[:program_minutes] numerator = conference.current_program_hours end (numerator / goal_count.to_f * 100).round(0).to_s endDepending of the unit I query the current amount of it and divide it by the goal count. That’s it!
def register ... ahoy.track 'Registered', title: 'New registration' ... endNow we know whether the registration comes from our blog article or a tweet! That’s awesome, isn’t it?
def get_campaign numerator = 0 if unit == Goal.units[:submissions] numerator = campaign.submissions_count elsif unit == Goal.units[:registrations] numerator = campaign.registrations_count elsif unit == Goal.units[:program_minutes] numerator = campaign.current_program_hours end progress = (numerator / goal_count.to_f * 100).round(0).to_s result = { 'goal_name' => to_s, 'campaign_name' => campaign.name, 'value' => numerator, 'unit' => unit, 'created_at' => created_at, 'progress' => progress, 'days_left' => days_left, } result endIn the end we calculate a hash with all the relevant data which we display on our dashboard:
FROM opensuse:13.1 MAINTAINERThen from the directory containing the Dockerfile run:" " # make sure the repositories are up to date RUN zypper --non-interactive --gpg-auto-import-keys ref RUN zypper in -y