diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index d359ca6..0000000 --- a/.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://EditorConfig.org - -root = true - -; Use 2 spaces for indentation in all Ruby files - -[*.rb] -indent_style = space -indent_size = 2 - -[Rakefile] -indent_style = space -indent_size = 2 - -[Gemfile*] -indent_style = space -indent_size = 2 - -[config.ru] -indent_style = space -indent_size = 2 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 176a458..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f30ab3f..0000000 --- a/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -.bundle -.DS_Store -.sass-cache -.gist-cache -.pygments-cache -_deploy -public -sass.old -source.old -source/_stash -source/stylesheets/screen.css -vendor -node_modules -Gemfile.lock -*.sublime* diff --git a/.powrc b/.powrc deleted file mode 100644 index 4777f08..0000000 --- a/.powrc +++ /dev/null @@ -1,5 +0,0 @@ -if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ] ; then - source "$rvm_path/scripts/rvm" - source ".rvmrc" -fi - \ No newline at end of file diff --git a/.slugignore b/.slugignore deleted file mode 100644 index 0a41d01..0000000 --- a/.slugignore +++ /dev/null @@ -1,3 +0,0 @@ -plugins -sass -source diff --git a/.themes/classic/.editorconfig b/.themes/classic/.editorconfig deleted file mode 100644 index 940fea3..0000000 --- a/.themes/classic/.editorconfig +++ /dev/null @@ -1,44 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://EditorConfig.org - - -; Use 2 spaces for indentation in SCSS, JavaScript, HTML, and XML - -[*.scss] -indent_style = space -indent_size = 2 - -[*.js] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 - -[*.xml] -indent_style = space -indent_size = 2 - - -; Use 4 spaces for indentation in Markdown files - -[*.md] -indent_style = space -indent_size = 4 - -[*.markdown] -indent_style = space -indent_size = 4 - - -; Override default indentation for some library files - -[jwplayer/glow/glow.xml] -indent_style = tab - -[libs/jXHR.js] -indent_style = tab - -[libs/swfobject-dynamic.js] -indent_style = tab diff --git a/.themes/classic/sass/_base.scss b/.themes/classic/sass/_base.scss deleted file mode 100644 index 05fdd00..0000000 --- a/.themes/classic/sass/_base.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "base/utilities"; -@import "base/solarized"; -@import "base/theme"; -@import "base/typography"; -@import "base/layout"; diff --git a/.themes/classic/sass/_partials.scss b/.themes/classic/sass/_partials.scss deleted file mode 100644 index 99c28b6..0000000 --- a/.themes/classic/sass/_partials.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import "partials/header"; -@import "partials/navigation"; -@import "partials/blog"; -@import "partials/sharing"; -@import "partials/syntax"; -@import "partials/archive"; -@import "partials/sidebar"; -@import "partials/footer"; diff --git a/.themes/classic/sass/base/_layout.scss b/.themes/classic/sass/base/_layout.scss deleted file mode 100644 index 8190342..0000000 --- a/.themes/classic/sass/base/_layout.scss +++ /dev/null @@ -1,192 +0,0 @@ -$max-width: 1200px !default; - -// Padding used for layout margins -$pad-min: 18px !default; -$pad-narrow: 25px !default; -$pad-medium: 35px !default; -$pad-wide: 55px !default; - -// Sidebar widths used in media queries -$sidebar-width-medium: 240px !default; -$sidebar-pad-medium: 15px !default; -$sidebar-pad-wide: 20px !default; -$sidebar-width-wide: 300px !default; - -$indented-lists: false !default; - -$header-font-size: 1em !default; -$header-padding-top: 1.5em !default; -$header-padding-bottom: 1.5em !default; - -.group { @include pie-clearfix; } - -@mixin collapse-sidebar { - float: none; - width: auto; - clear: left; - margin: 0; - padding: 0 $pad-medium 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid lighten($sidebar-border, 4); - section { - &.odd, &.even { float: left; width: 48%; } - &.odd { margin-left: 0; } - &.even { margin-left: 4%; } - } - &.thirds section { - width: 30%; - margin-left: 5%; - &.first { - margin-left: 0; - clear: both; - } - } -} - -body { - -webkit-text-size-adjust: none; - max-width: $max-width; - position: relative; - margin: 0 auto; - > header, > nav, > footer, #content > article, #content > div > article, #content > div > section { - @extend .group; - padding-left: $pad-min; - padding-right: $pad-min; - @media only screen and (min-width: 480px) { - padding-left: $pad-narrow; - padding-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - padding-left: $pad-medium; - padding-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - padding-left: $pad-wide; - padding-right: $pad-wide; - } - } - div.pagination { - @extend .group; - margin-left: $pad-min; - margin-right: $pad-min; - @media only screen and (min-width: 480px) { - margin-left: $pad-narrow; - margin-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - margin-left: $pad-medium; - margin-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - margin-left: $pad-wide; - margin-right: $pad-wide; - } - } - > header { - font-size: $header-font-size; - padding-top: $header-padding-top; - padding-bottom: $header-padding-bottom; - } -} - -#content { - overflow: hidden; - > div, > article { width: 100%; } -} - -aside.sidebar { - float: none; - padding: 0 $pad-min 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid $sidebar-border; - @extend .group; -} - -.flex-content { max-width: 100%; height: auto; } - -.basic-alignment { - &.left { float: left; margin-right: 1.5em; } - &.right { float: right; margin-left: 1.5em; } - &.center { display:block; margin: 0 auto 1.5em; } - &.left, &.right { margin-bottom: .8em; } -} - -.toggle-sidebar { &, .no-sidebar & { display: none; }} - -body.sidebar-footer { - @media only screen and (min-width: 750px) { - aside.sidebar{ @include collapse-sidebar; } - } - #content { margin-right: 0px; } - .toggle-sidebar { display: none; } -} - -@media only screen and (min-width: 550px) { - body > header { font-size: $header-font-size; } -} -@media only screen and (min-width: 750px) { - aside.sidebar { @include collapse-sidebar; } -} -#main, #content, .sidebar { - @extend .group; -} -@media only screen and (min-width: 768px) { - body { -webkit-text-size-adjust: auto; } - body > header { font-size: $header-font-size * 1.2; } - #main { - padding: 0; - margin: 0 auto; - } - #content { - overflow: visible; - margin-right: $sidebar-width-medium; - position: relative; - .no-sidebar & { margin-right: 0; border-right: 0; } - .collapse-sidebar & { margin-right: 20px; } - > div, > article { - padding-top: $pad-medium/2; - padding-bottom: $pad-medium/2; - float: left; - } - } - aside.sidebar { - width: $sidebar-width-medium - $sidebar-pad-medium*2; - padding: 0 $sidebar-pad-medium $sidebar-pad-medium; - background: none; - clear: none; - float: left; - margin: 0 -100% 0 0; - section { - width: auto; margin-left: 0; - &.odd, &.even { float: none; width: auto; margin-left: 0; } - } - .collapse-sidebar & { - @include collapse-sidebar; - } - } -} - -@media only screen and (min-width: 992px) { - body > header { font-size: $header-font-size * 1.3; } - #content { margin-right: $sidebar-width-wide; } - #content { - > div, > article { - padding-top: $pad-wide/2; - padding-bottom: $pad-wide/2; - } - } - aside.sidebar { - width: $sidebar-width-wide - $sidebar-pad-wide*2; - padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide; - .collapse-sidebar & { - padding: { left: $pad-wide; right: $pad-wide; } - } - } -} - -@if $indented-lists == false { - @media only screen and (min-width: 768px) { - ul, ol { margin-left: 0; } - } -} - diff --git a/.themes/classic/sass/base/_solarized.scss b/.themes/classic/sass/base/_solarized.scss deleted file mode 100644 index 45d8fc5..0000000 --- a/.themes/classic/sass/base/_solarized.scss +++ /dev/null @@ -1,46 +0,0 @@ -$base03: #002b36 !default; //darkest blue -$base02: #073642 !default; //dark blue -$base01: #586e75 !default; //darkest gray -$base00: #657b83 !default; //dark gray -$base0: #839496 !default; //medium gray -$base1: #93a1a1 !default; //medium light gray -$base2: #eee8d5 !default; //cream -$base3: #fdf6e3 !default; //white -$solar-yellow: #b58900 !default; -$solar-orange: #cb4b16 !default; -$solar-red: #dc322f !default; -$solar-magenta: #d33682 !default; -$solar-violet: #6c71c4 !default; -$solar-blue: #268bd2 !default; -$solar-cyan: #2aa198 !default; -$solar-green: #859900 !default; - -$solarized: dark !default; - -@if $solarized == light { - - $_base03: $base03; - $_base02: $base02; - $_base01: $base01; - $_base00: $base00; - $_base0: $base0; - $_base1: $base1; - $_base2: $base2; - $_base3: $base3; - - $base03: $_base3; - $base02: $_base2; - $base01: $_base1; - $base00: $_base0; - $base0: $_base00; - $base1: $_base01; - $base2: $_base02; - $base3: $_base03; -} - -/* non highlighted code colors */ -$pre-bg: $base03 !default; -$pre-border: darken($base02, 5) !default; -$pre-color: $base1 !default; - - diff --git a/.themes/classic/sass/base/_theme.scss b/.themes/classic/sass/base/_theme.scss deleted file mode 100644 index c35136d..0000000 --- a/.themes/classic/sass/base/_theme.scss +++ /dev/null @@ -1,85 +0,0 @@ -$noise-bg: image-url('noise.png') top left !default; -$img-border: inline-image('dotted-border.png') !default; - -// Main Link Colors -$link-color: lighten(#165b94, 3) !default; -$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default; -$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default; -$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default; - -// Main Section Colors -$main-bg: #f8f8f8 !default; -$page-bg: #252525 !default; -$article-border: #eeeeee !default; - -$header-bg: #333 !default; -$header-border: lighten($header-bg, 15) !default; -$title-color: #f2f2f2 !default; -$subtitle-color: #aaa !default; - -$text-color: #222 !default; -$text-color-light: #aaa !default; -$type-border: #ddd !default; - -/* Navigation */ -$nav-bg: #ccc !default; -$nav-bg-front: image-url('noise.png') !default; -$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default; -$nav-color: darken($nav-bg, 38) !default; -$nav-color-hover: darken($nav-color, 25) !default; -$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default; -$nav-border: darken($nav-bg, 10) !default; -$nav-border-top: lighten($nav-bg, 15) !default; -$nav-border-bottom: darken($nav-bg, 25) !default; -$nav-border-left: darken($nav-bg, 11) !default; -$nav-border-right: lighten($nav-bg, 7) !default; - -/* Sidebar colors */ -$sidebar-bg: #f2f2f2 !default; -$sidebar-link-color: $text-color !default; -$sidebar-link-color-hover: $link-color-hover !default; -$sidebar-link-color-active: $link-color-active !default; -$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default; -$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default; -$sidebar-border-hover: darken($sidebar-bg, 7) !default; -$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default; -$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default; - -$footer-color: #888 !default; -$footer-bg: #ccc !default; -$footer-bg-front: image-url('noise.png') !default; -$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default; -$footer-color: darken($footer-bg, 38) !default; -$footer-color-hover: darken($footer-color, 10) !default; -$footer-border-top: lighten($footer-bg, 15) !default; -$footer-border-bottom: darken($footer-bg, 15) !default; -$footer-link-color: darken($footer-bg, 38) !default; -$footer-link-color-hover: darken($footer-color, 25) !default; -$page-border-bottom: darken($footer-bg, 5) !default; - - -/* Core theme application */ - -a { - @include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active); -} -aside.sidebar a { - @include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active); -} -a { - @include transition(color .3s); -} - -html { - background: $page-bg image-url('line-tile.png') top left; -} -body { - > div { - background: $sidebar-bg $noise-bg; - border-bottom: 1px solid $page-border-bottom; - > div { - background: $main-bg $noise-bg; - border-right: 1px solid $sidebar-border; - } - } -} diff --git a/.themes/classic/sass/base/_typography.scss b/.themes/classic/sass/base/_typography.scss deleted file mode 100644 index 9a6bbac..0000000 --- a/.themes/classic/sass/base/_typography.scss +++ /dev/null @@ -1,164 +0,0 @@ -$blockquote: $type-border !default; -$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default; -$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default; -$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; -$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default; -$header-title-font-family: $heading-font-family !default; -$header-subtitle-font-family: $heading-font-family !default; - -// Fonts -.heading { - font-family: $heading-font-family; -} -.sans { font-family: $sans; } -.serif { font-family: $serif; } -.mono { font-family: $mono; } - -body > header h1 { - font-size: 2.2em; - @extend .heading; - font-family: $header-title-font-family; - font-weight: normal; - line-height: 1.2em; - margin-bottom: 0.6667em; -} -body > header h2 { - font-family: $header-subtitle-font-family; -} - -body { - line-height: 1.5em; - color: $text-color; - @extend .serif; -} -h1 { - font-size: 2.2em; - line-height: 1.2em; -} - -@media only screen and (min-width: 992px) { - body { font-size: 1.15em; } - h1 { font-size: 2.6em; line-height: 1.2em; } -} - -#{headings()}{ - @extend .heading; - text-rendering: optimizelegibility; - margin-bottom: 1em; - font-weight: bold; -} -h2, section h1 { - font-size: 1.5em; -} -h3, section h2, section section h1 { - font-size: 1.3em; -} -h4, section h3, section section h2, section section section h1 { - font-size: 1em; -} -h5, section h4, section section h3 { - font-size: .9em; -} -h6, section h5, section section h4, section section section h3 { - font-size: .8em; -} - -p, article blockquote, ul, ol { margin-bottom: 1.5em; } - -ul { list-style-type: disc; - ul { list-style-type: circle; margin-bottom: 0px; - ul { list-style-type: square; margin-bottom: 0px; }}} - -ol { list-style-type: decimal; - ol { list-style-type: lower-alpha; margin-bottom: 0px; - ol { list-style-type: lower-roman; margin-bottom: 0px; }}} - -ul, ol { &, ul, ol { margin-left: 1.3em; }} -ul, ol { ul, ol { margin-bottom: 0em; }} - -strong { font-weight: bold; } - -em { font-style: italic; } - -sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} -sup { top: -.5em; } -sub { bottom: -.5em; } - -a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } - -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } -} - -em, dfn { font-style: italic; } - -strong, dfn { font-weight: bold; } - -del, s { text-decoration: line-through; } - -abbr, acronym { border-bottom: 1px dotted; cursor: help; } - -pre, code, tt { @extend .mono; } - -hr { margin-bottom: 0.2em; } - -small { font-size: .8em; } - -big { font-size: 1.2em; } - -article blockquote { - $bq-margin: 1.2em; - font-style: italic; - position: relative; - font-size: 1.2em; - line-height: 1.5em; - padding-left: 1em; - border-left: 4px solid rgba($text-color-light, .5); - cite { - font-style: italic; - a { color: $text-color-light !important; word-wrap: break-word; } - &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } - } - @media only screen and (min-width: 992px) { - padding-left: 1.5em; - border-left-width: 4px; - } -} - -.pullquote-right:before, -.pullquote-left:before { - /* Reset metrics. */ - padding: 0; - border: none; - - /* Content */ - content: attr(data-pullquote); - - /* Pull out to the right, modular scale based margins. */ - float: right; - width: 45%; - margin: .5em 0 1em 1.5em; - - /* Baseline correction */ - position: relative; - top: 7px; - font-size: 1.4em; - line-height: 1.45em; -} - -.pullquote-left:before { - /* Make left pullquotes align properly. */ - float: left; - margin: .5em 1.5em 1em 0; -} - -/* @extend this to force long lines of continuous text to wrap */ -.force-wrap { - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; -} - diff --git a/.themes/classic/sass/base/_utilities.scss b/.themes/classic/sass/base/_utilities.scss deleted file mode 100644 index 2d49e65..0000000 --- a/.themes/classic/sass/base/_utilities.scss +++ /dev/null @@ -1,28 +0,0 @@ -@mixin mask-image($img, $repeat: no-repeat){ - @include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms); - @include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms); - width: image-width($img); - height: image-height($img); -} - -@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) { - @include border-radius($border-radius); - @include box-shadow($shadow); - @include box-sizing(border-box); - border: $border; -} - -@mixin selection($bg, $color: inherit, $text-shadow: none){ - * { - &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } - } -} - -@function text-color($color, $dark: dark, $light: light){ - $text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000; - $text-color: if($text-color >= 150, $dark, $light); - @return $text-color; -} - diff --git a/.themes/classic/sass/custom/_colors.scss b/.themes/classic/sass/custom/_colors.scss deleted file mode 100644 index 740266a..0000000 --- a/.themes/classic/sass/custom/_colors.scss +++ /dev/null @@ -1,43 +0,0 @@ -// Here you can easily change your sites's color scheme. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. -// If you need a handy color picker try http://hslpicker.com - -//$header-bg: #263347; -//$subtitle-color: lighten($header-bg, 58); -//$nav-bg: desaturate(lighten(#8fc17a, 18), 5); -//$nav-bg-front: image-url('noise.png'); -//$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)); -//$sidebar-bg: desaturate(#eceff5, 8); -//$sidebar-link-color: saturate(#526f9a, 10); -//$sidebar-link-color-hover: darken(#7ab662, 9); -//$footer-bg: #ccc !default; -//$footer-bg-front: image-url('noise.png'); -//$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)); - - -/* To use the light Solarized highlighting theme uncomment the following line */ -//$solarized: light; - -/* If you want to tweak the Solarized colors you can do that here */ -//$base03: #002b36; //darkest blue -//$base02: #073642; //dark blue -//$base01: #586e75; //darkest gray -//$base00: #657b83; //dark gray -//$base0: #839496; //medium gray -//$base1: #93a1a1; //medium light gray -//$base2: #eee8d5; //cream -//$base3: #fdf6e3; //white -//$solar-yellow: #b58900; -//$solar-orange: #cb4b16; -//$solar-red: #dc322f; -//$solar-magenta: #d33682; -//$solar-violet: #6c71c4; -//$solar-blue: #268bd2; -//$solar-cyan: #2aa198; -//$solar-green: #859900; - - -/* Non highlighted code colors */ -//$pre-bg: $base03; -//$pre-border: darken($base02, 5); -//$pre-color: $base1; diff --git a/.themes/classic/sass/custom/_fonts.scss b/.themes/classic/sass/custom/_fonts.scss deleted file mode 100644 index 1a6b2a0..0000000 --- a/.themes/classic/sass/custom/_fonts.scss +++ /dev/null @@ -1,10 +0,0 @@ -// Here you can easily change font faces which are used in your site. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's. -// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html - -//$sans: "Optima", sans-serif; -//$serif: "Baskerville", serif; -//$mono: "Courier", monospace; -//$heading-font-family: "Verdana", sans-serif; -//$header-title-font-family: "Futura", sans-serif; -//$header-subtitle-font-family: "Futura", sans-serif; diff --git a/.themes/classic/sass/custom/_layout.scss b/.themes/classic/sass/custom/_layout.scss deleted file mode 100644 index 74c7de9..0000000 --- a/.themes/classic/sass/custom/_layout.scss +++ /dev/null @@ -1,21 +0,0 @@ -// Here you can easily change your sites's layout. -// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works. - -//$header-font-size: 1em; -//$header-padding-top: 1.5em; -//$header-padding-bottom: 1.5em; - -//$max-width: 1350px; -//$indented-lists: true; - -// Padding used for layout margins -//$pad-min: 18px; -//$pad-narrow: 25px; -//$pad-medium: 35px; -//$pad-wide: 55px; - -// Sidebar widths used in media queries -//$sidebar-width-medium: 240px; -//$sidebar-pad-medium: 15px; -//$sidebar-pad-wide: 20px; -//$sidebar-width-wide: 300px; diff --git a/.themes/classic/sass/custom/_styles.scss b/.themes/classic/sass/custom/_styles.scss deleted file mode 100644 index 91ffccc..0000000 --- a/.themes/classic/sass/custom/_styles.scss +++ /dev/null @@ -1,2 +0,0 @@ -// This File is imported last, and will override other styles in the cascade -// Add styles here to make changes without digging in too much diff --git a/.themes/classic/sass/partials/_archive.scss b/.themes/classic/sass/partials/_archive.scss deleted file mode 100644 index 9ef1e82..0000000 --- a/.themes/classic/sass/partials/_archive.scss +++ /dev/null @@ -1,72 +0,0 @@ -#archive { - #content > div { &, > article { padding-top: 0; } } -} -#blog-archives { - article { - padding: 1em 0 1em; - position: relative; - background: $img-border bottom left repeat-x; - &:last-child { - background: none; - } - footer { padding: 0; margin: 0;} - } - h1 { color: $text-color; margin-bottom: .3em; } - h2 { display: none; } - h1 { - font-size: 1.5em; - a { - @include hover-link; - color: inherit; - &:hover { color: $link-color-hover; } - font-weight: normal; - display: inline-block; - } - } - a.category, time { - @extend .sans; - color: $text-color-light; - } - color: $text-color-light; - .entry-content { display: none; } - time { - font-size: .9em; - line-height: 1.2em; - .month, .day { display: inline-block; } - .month { text-transform: uppercase; } - } - p { margin-bottom: 1em; } - &, .entry-content { a { @include link-colors(inherit, $link-color-hover); }} - a:hover { color: $link-color-hover; } - @media only screen and (min-width: 550px) { - article { margin-left: 5em; } - h2 { - margin-bottom: .3em; - font-weight: normal; - display: inline-block; - position: relative; top: -1px; - float: left; - &:first-child { padding-top: .75em; } - } - time { - position: absolute; - text-align: right; - left: 0em; - top: 1.8em; - } - .year { display: none; } - article { - padding:{left: 4.5em; bottom: .7em;} - } - a.category { - line-height: 1.1em; - } - } -} -#content > .category { - article { - margin-left: 0; - padding-left: 6.8em; - } - .year { display: inline; } -} diff --git a/.themes/classic/sass/partials/_blog.scss b/.themes/classic/sass/partials/_blog.scss deleted file mode 100644 index 57fe7a8..0000000 --- a/.themes/classic/sass/partials/_blog.scss +++ /dev/null @@ -1,141 +0,0 @@ -article { - padding-top: 1em; - a { @extend .force-wrap; } - header { - position: relative; - padding-top: 2em; - padding-bottom: 1em; - margin-bottom: 1em; - background: $img-border bottom left repeat-x; - h1 { - margin: 0; - a { text-decoration: none; - &:hover { text-decoration: underline; } } - } - p { - font-size: .9em; - color: $text-color-light; - margin: 0; - &.meta { - @extend .sans; - text-transform: uppercase; - position: absolute; top: 0; - } - } - @media only screen and (min-width: 768px) { - margin-bottom: 1.5em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - } - } - h2 { - padding-top: 0.8em; - background: $img-border top left repeat-x; - } - .entry-content & h2:first-child, header + h2 { padding-top: 0; } - h2:first-child, header + h2 { background: none; } - .feature { - padding-top: .5em; - margin-bottom: 1em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - font-size: 2.0em; font-style: italic; - line-height: 1.3em; - } - img, video, .flash-video { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box; - } - video, .flash-video { margin: 0 auto 1.5em; } - video { display: block; width: 100%; } - .flash-video { - > div { - position: relative; - display: block; - padding-bottom: 56.25%; - padding-top: 1px; - height: 0; - overflow: hidden; - iframe, object, embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - } - > footer { - padding-bottom: 2.5em; - margin-top: 2em; - @extend .sans; - p.meta { - margin-bottom: .8em; - font-size: .85em; - clear: both; - overflow: hidden; - } - .byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before { - @extend .separator; - } - } - -} -article + article { - .blog-index & { - background: $img-border top left repeat-x; - } -} -#content .blog-index { - padding: { top: 0; bottom: 0; } - article { padding-top: 2em; } - article header { background: none; padding-bottom: 0; } - article h1 { - font-size: 2.2em; - a { color: inherit; &:hover { color: $link-color-hover; } } - } - a[rel=full-article] { - background: darken($main-bg, 5); - display: inline-block; - padding: .4em .8em; - margin-right: .5em; - text-decoration: none; - color: mix($text-color, $text-color-light); - @extend .serif; - @include transition(background-color .5s); - &:hover { - background: $link-color-hover; - text-shadow: none; - color: $main-bg; - } - } - footer { - @extend .sans; - margin-top: 1em; - } -} - -.separator { - content: "\2022 "; - padding: 0 .4em 0 .2em; - display: inline-block; -} - -#content div.pagination { - text-align: center; - font-size: .95em; - position: relative; - background: $img-border top left repeat-x; - padding: {top: 1.5em; bottom: 1.5em;} - a { - text-decoration: none; - color: $text-color-light; - &.prev { position: absolute; left: 0; } - &.next { position: absolute; right: 0; } - &:hover { color: $link-color-hover; } - &[href*=archive] { - &:before, &:after { content: '\2014'; padding: 0 .3em; } - } - } -} diff --git a/.themes/classic/sass/partials/_footer.scss b/.themes/classic/sass/partials/_footer.scss deleted file mode 100644 index 3741122..0000000 --- a/.themes/classic/sass/partials/_footer.scss +++ /dev/null @@ -1,19 +0,0 @@ -body > footer { - @extend .sans; - font-size: .8em; - color: $footer-color; - text-shadow: lighten($footer-bg, 5) 0 1px; - background-color: $footer-bg; - @include background($footer-bg-front, $footer-bg-back); - border-top: 1px solid $footer-border-top; - position: relative; - padding-top: 1em; - padding-bottom: 1em; - margin-bottom: 3em; - @include border-bottom-radius(.4em); - z-index: 1; - a { - @include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color); - } - p:last-child { margin-bottom: 0; } -} diff --git a/.themes/classic/sass/partials/_header.scss b/.themes/classic/sass/partials/_header.scss deleted file mode 100644 index e3c6c02..0000000 --- a/.themes/classic/sass/partials/_header.scss +++ /dev/null @@ -1,18 +0,0 @@ -body > header { - background: $header-bg; - h1 { - display: inline-block; - margin: 0; - a, a:visited, a:hover { - color: $title_color; - text-decoration: none; - } - } - h2 { - margin: .2em 0 0; - @extend .sans; - font-size: 1em; - color: $subtitle-color; - font-weight: normal; - } -} diff --git a/.themes/classic/sass/partials/_navigation.scss b/.themes/classic/sass/partials/_navigation.scss deleted file mode 100644 index 30fa011..0000000 --- a/.themes/classic/sass/partials/_navigation.scss +++ /dev/null @@ -1,137 +0,0 @@ -body > nav { - position: relative; - background-color: $nav-bg; - @include background($nav-bg-front, $nav-bg-back); - border: { - top: 1px solid $nav-border-top; - bottom: 1px solid $nav-border-bottom; } - padding-top: .35em; - padding-bottom: .35em; - form { - @include background-clip(padding-box); - margin: 0; padding: 0; - .search { - padding: .3em .5em 0; - font-size: .85em; - font-family: $sans; - line-height: 1.1em; - width: 95%; - @include border-radius(.5em); - @include background-clip(padding-box); - @include box-shadow(lighten($nav-bg, 2) 0 1px); - background-color: lighten($nav-bg, 15); - border: 1px solid $nav-border; - color: #888; - &:focus { - color: #444; - border-color: #80b1df; - @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); - background-color: #fff; - outline: none; - } - } - } - fieldset[role=search]{ float: right; width: 48%; } - fieldset.mobile-nav{ float: left; width: 48%; - select{ width: 100%; font-size: .8em; border: 1px solid #888;} - } - ul { display: none; } - @media only screen and (min-width: 550px) { - font-size: .9em; - ul { - @include horizontal-list(0); - float: left; - display: block; - padding-top: .15em; - } - ul.subscription { - margin-left: .8em; - float: right; - li:last-child a { padding-right: 0; } - } - ul li { - margin: 0; - } - a { - @include link-colors($nav-color, $nav-color-hover, $visited: $nav-color); - font-family: $sans; - text-shadow: lighten($nav-bg, 12) 0 1px; - float: left; - text-decoration: none; - font-size: 1.1em; - padding: .1em 0; - line-height: 1.5em; - } - li + li { - border-left: 1px solid $nav-border-left; - margin-left: .8em; - a { - padding-left: .8em; - border-left: 1px solid $nav-border-right; - } - } - form { - float: right; - text-align: left; - padding-left: .8em; - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px; - .search { - width: 93%; - font-size: .95em; - line-height: 1.2em; - } - } - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px; - .search { width: 91%; } - } - fieldset.mobile-nav { display: none; } - fieldset[role=search]{ width: 99%; } - } - @media only screen and (min-width: 992px) { - form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px; - } - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px; - } - } -} -.no-placeholder { - body > nav .search { - background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat; - text-indent: 1.3em; - } -} -@mixin mask-subscription-nav($feed: 'rss.png'){ - position: relative; top: 0px; - text-indent: -999999em; - background-color: $nav-border-right; - border: 0; - padding: 0; - &,&:after { @include mask-image($feed); } - &:after { - content: ""; - position: absolute; top: -1px; left: 0; - background-color: lighten($nav-color, 25); - } - &:hover:after { background-color: lighten($nav-color, 20); } -} -.maskImage { - body > nav { - @media only screen and (min-width: 550px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px; - } - } - @media only screen and (min-width: 992px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px; - } - } - } - ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }} - a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); } - a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); } -} - diff --git a/.themes/classic/sass/partials/_sharing.scss b/.themes/classic/sass/partials/_sharing.scss deleted file mode 100644 index 3eecb48..0000000 --- a/.themes/classic/sass/partials/_sharing.scss +++ /dev/null @@ -1,8 +0,0 @@ -.sharing { - p.meta + & { - padding: { top: 1em; left: 0; } - background: $img-border top left repeat-x; - } -} - -#fb-root { display: none; } diff --git a/.themes/classic/sass/partials/_sidebar.scss b/.themes/classic/sass/partials/_sidebar.scss deleted file mode 100644 index cd8c1ca..0000000 --- a/.themes/classic/sass/partials/_sidebar.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "sidebar/base"; -@import "sidebar/googleplus"; -@import "sidebar/pinboard"; -@import "sidebar/delicious"; diff --git a/.themes/classic/sass/partials/_syntax.scss b/.themes/classic/sass/partials/_syntax.scss deleted file mode 100644 index 5465286..0000000 --- a/.themes/classic/sass/partials/_syntax.scss +++ /dev/null @@ -1,261 +0,0 @@ -.highlight, html .gist .gist-file .gist-syntax .gist-highlight { - table td.code { width: 100%; } - border: 1px solid $pre-border !important; -} -.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { - text-align: right; - font-size: 13px; - line-height: 1.45em; - @if $solarized == light { - background: lighten($base03, 1) $noise-bg !important; - border-right: 1px solid darken($base02, 2) !important; - @include box-shadow(lighten($base03, 2) -1px 0 inset); - text-shadow: lighten($base02, 2) 0 -1px; - } @else { - background: $base02 $noise-bg !important; - border-right: 1px solid darken($base03, 2) !important; - @include box-shadow(lighten($base02, 2) -1px 0 inset); - text-shadow: darken($base02, 10) 0 -1px; - } - span { color: $base01 !important; } - padding: .8em !important; - @include border-radius(0); -} - -figure.code, .gist-file, pre { - @include box-shadow(rgba(#000, .06) 0 0 10px); - .highlight pre { @include box-shadow(none); } -} - -.gist .highlight, figure.code .highlight { - @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); -} -html .gist .gist-file { - margin-bottom: 1.8em; - position: relative; - border: none; - padding-top: image-height("code_bg.png") !important; - .highlight { - margin-bottom: 0; - } - .gist-syntax { - border-bottom: 0 !important; - background: none !important; - .gist-highlight { - background: $base03 !important; - } - .highlight pre { - @extend .pre-code; - padding: 0; - } - } - .gist-meta { - padding: .6em 0.8em; - border: 1px solid lighten($base02, 2) !important; - color: $base01; - font-size: .7em !important; - @if $solarized == light { - background: lighten($base03, 2) $noise-bg; - border: 1px solid $pre-border !important; - border-top: 1px solid lighten($base03, 2) !important; - } @else { - background: $base02 $noise-bg; - } - @extend .sans; - line-height: 1.5em; - a { - color: mix($base1, $base01) !important; - @include hover-link; - &:hover { color: $base1 !important; } - } - a[href*='#file'] { - position: absolute; top: 0; left:0; right:-10px; - color: #474747 !important; - @extend .code-title; - &:hover { color: $link-color !important; } - } - a[href*=raw]{ - @extend .download-source; - top: .4em; - } - } -} -pre { - background: $pre-bg $noise-bg; - @include border-radius(.4em); - @extend .mono; - border: 1px solid $pre-border; - line-height: 1.45em; - font-size: 13px; - margin-bottom: 2.1em; - padding: .8em 1em; - color: $pre-color; - overflow: auto; -} -h3.filename { - @extend .code-title; - + pre { @include border-top-radius(0px); } -} - -p, li { - code { - @extend .mono; - display: inline-block; - white-space: no-wrap; - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - @include border-radius(.4em); - padding: 0 .3em; - margin: -1px 0; - } - pre code { font-size: 1em !important; background: none; border: none; } -} - -.pre-code { - font-family: $mono !important; - overflow: scroll; - overflow-y: hidden; - display: block; - padding: .8em; - overflow-x: auto; - line-height: 1.45em; - background: $base03 $noise-bg !important; - color: $base1 !important; - span { color: $base1 !important; } - span { font-style: normal !important; font-weight: normal !important; } - - .c { color: $base01 !important; font-style: italic !important; } /* Comment */ - .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ - .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ - .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ - .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ - .err { color: $solar-red !important; background: none !important; } /* Error */ - .k { color: $solar-orange !important; } /* Keyword */ - .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ - .p { color: $base1 !important; } /* Operator */ - .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ - .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ - .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ - .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ - //.gr { color: #aa0000 } /* Generic.Error */ - .gh { color: $base01 !important; } /* Generic.Heading */ - .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ - .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ - //.go { color: #888888 } /* Generic.Output */ - //.gp { color: #555555 } /* Generic.Prompt */ - .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ - .gu { color: $solar-violet !important; } /* Generic.Subheading */ - //.gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ - .kd { color: $solar-blue !important; } /* Keyword.Declaration */ - .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ - .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ - .kt { color: $solar-cyan !important; } /* Keyword.Type */ - .n { color: $solar-blue !important; } - .na { color: $solar-blue !important; } /* Name.Attribute */ - .nb { color: $solar-green !important; } /* Name.Builtin */ - .nc { color: $solar-magenta !important;} /* Name.Class */ - .no { color: $solar-yellow !important; } /* Name.Constant */ - //.ni { color: #800080 } /* Name.Entity */ - .nl { color: $solar-green !important; } - .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ - .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ - .nn { color: $solar-yellow !important; } /* Name.Namespace */ - .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ - .nx { color: $solar-yellow !Important; } - //.bp { color: #999999 } /* Name.Builtin.Pseudo */ - //.vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: $solar-blue !important; } /* Name.Variable.Global */ - .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ - .nv { color: $solar-blue !important; } /* Name.Variable */ - //.w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ - .m { color: $solar-cyan !important; } /* Literal.Number */ - .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ - .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ - //.mo { color: #009999 } /* Literal.Number.Oct */ - .s { color: $solar-cyan !important; } /* Literal.String */ - //.sb { color: #d14 } /* Literal.String.Backtick */ - //.sc { color: #d14 } /* Literal.String.Char */ - .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ - .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ - .se { color: $solar-red !important; } /* Literal.String.Escape */ - //.sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: $solar-blue !important; } /* Literal.String.Interpol */ - //.sx { color: #d14 } /* Literal.String.Other */ - .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ - .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ - //.ss { color: #990073 } /* Literal.String.Symbol */ - //.il { color: #009999 } /* Literal.Number.Integer.Long */ - div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} -} - -.highlight, .gist-highlight { - pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } - margin-bottom: 1.8em; - background: $base03; - overflow-y: hidden; - overflow-x: auto; -} - -$solar-scroll-bg: rgba(#fff, .15); -$solar-scroll-thumb: rgba(#fff, .2); -@if $solarized == light { - $solar-scroll-bg: rgba(#000, .15); - $solar-scroll-thumb: rgba(#000, .15); -} - -pre, .highlight, .gist-highlight { - &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } - &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } -} - -.highlight code { - @extend .pre-code; background: #000; -} -figure.code { - background: none; - padding: 0; - border: 0; - margin-bottom: 1.5em; - pre { margin-bottom: 0; } - figcaption { - position: relative; - @extend .code-title; - a { @extend .download-source; } - } - .highlight { - margin-bottom: 0; - } -} - -.code-title { - text-align: center; - font-size: 13px; - line-height: 2em; - text-shadow: #cbcccc 0 1px 0; - color: #474747; - font-weight: normal; - margin-bottom: 0; - @include border-top-radius(5px); - font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; - background: #aaaaaa image-url("code_bg.png") top repeat-x; - border: 1px solid #565656; - border-top-color: #cbcbcb; - border-left-color: #a5a5a5; - border-right-color: #a5a5a5; - border-bottom: 0; -} - -.download-source { - position: absolute; right: .8em; - @include hover-link; - color: #666 !important; - z-index: 1; - font-size: 13px; - text-shadow: #cbcccc 0 1px 0; - padding-left: 3em; -} diff --git a/.themes/classic/sass/partials/sidebar/_base.scss b/.themes/classic/sass/partials/sidebar/_base.scss deleted file mode 100644 index 5441304..0000000 --- a/.themes/classic/sass/partials/sidebar/_base.scss +++ /dev/null @@ -1,106 +0,0 @@ -.side-shadow-border { - @include box-shadow(lighten($sidebar-bg, 5) 0 1px); -} -aside.sidebar { - overflow: hidden; - color: $sidebar-color; - text-shadow: lighten($sidebar-bg, 8) 0 1px; - a { @extend .force-wrap; } - section { - @extend .sans; - font-size: .8em; - line-height: 1.4em; - margin-bottom: 1.5em; - h1 { - margin: 1.5em 0 0; - padding-bottom: .2em; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - + p { - padding-top: .4em; - } - } - } - img { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box($border: #fff .3em solid); - } - ul { - margin-bottom: 0.5em; - margin-left: 0; - } - li { - list-style: none; - padding: .5em 0; - margin: 0; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - p:last-child { - margin-bottom: 0; - } - } - a { - color: inherit; - @include transition(color .5s); - } - &:hover a { - color: $sidebar-link-color; - &:hover { color: $sidebar-link-color-hover; } - } -} -.aside-alt-link { - color: $sidebar-link-color-subdued; - &:hover { - color: $sidebar-link-color-subdued-hover; - } -} - -@media only screen and (min-width: 768px) { - .toggle-sidebar { - outline: none; - position: absolute; right: -10px; top: 0; bottom: 0; - display: inline-block; - text-decoration: none; - color: mix($text-color-light, $sidebar-bg); - width: 9px; - cursor: pointer; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - @include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0))); - } - &:after { - position: absolute; right: -11px; top: 0; - width: 20px; - font-size: 1.2em; - line-height: 1.1em; - padding-bottom: .15em; - @include border-bottom-right-radius(.3em); - text-align: center; - background: $main-bg $noise-bg; - border-bottom: 1px solid $sidebar-border; - border-right: 1px solid $sidebar-border; - content: "\00BB"; - text-indent: -1px; - } - .collapse-sidebar & { - text-indent: 0px; - right: -20px; - width: 19px; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - } - &:after { - border-left: 1px solid $sidebar-border; - text-shadow: #fff 0 1px; - content: "\00AB"; - left: 0px; right: 0; - text-align: center; - text-indent: 0; - border: 0; - border-right-width: 0; - background: none; - } - } - } -} diff --git a/.themes/classic/sass/partials/sidebar/_delicious.scss b/.themes/classic/sass/partials/sidebar/_delicious.scss deleted file mode 100644 index e962702..0000000 --- a/.themes/classic/sass/partials/sidebar/_delicious.scss +++ /dev/null @@ -1,4 +0,0 @@ -.delicious-posts { - a.delicious-link { margin-bottom: .5em; display: block; } - p { font-size: 1em; } -} diff --git a/.themes/classic/sass/partials/sidebar/_googleplus.scss b/.themes/classic/sass/partials/sidebar/_googleplus.scss deleted file mode 100644 index c2a693e..0000000 --- a/.themes/classic/sass/partials/sidebar/_googleplus.scss +++ /dev/null @@ -1,26 +0,0 @@ -.googleplus { - h1 { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - -o-box-shadow: none !important; - box-shadow: none !important; - border-bottom: 0px none !important; - } - a { - text-decoration: none; - white-space: normal !important; - line-height: 32px; - - img { - float: left; - margin-right: 0.5em; - border: 0 none; - } - } -} - -.googleplus-hidden { - position: absolute; - top: -1000em; - left: -1000em; -} diff --git a/.themes/classic/sass/partials/sidebar/_pinboard.scss b/.themes/classic/sass/partials/sidebar/_pinboard.scss deleted file mode 100644 index 9f9ab46..0000000 --- a/.themes/classic/sass/partials/sidebar/_pinboard.scss +++ /dev/null @@ -1,12 +0,0 @@ -#pinboard_linkroll { - .pin-title, .pin-description { - display: block; - margin-bottom: .5em; - } - .pin-tag { - @include hover-link; - @extend .aside-alt-link; - &:after { content: ','; } - &:last-child:after { content: ''; } - } -} diff --git a/.themes/classic/sass/plugins/_plugins.scss b/.themes/classic/sass/plugins/_plugins.scss deleted file mode 100644 index 3b4ba0b..0000000 --- a/.themes/classic/sass/plugins/_plugins.scss +++ /dev/null @@ -1,6 +0,0 @@ -/* - Add plugin stylesheets to this directory and they will be automatically - Imported. Load order is alphabetical and styles can be overriden in - custom/_style.scss which is loaded after all plugin stylesheets. -*/ - diff --git a/.themes/classic/sass/screen.scss b/.themes/classic/sass/screen.scss deleted file mode 100644 index 75eac0a..0000000 --- a/.themes/classic/sass/screen.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import "compass"; -@include global-reset; - -@import "custom/colors"; -@import "custom/fonts"; -@import "custom/layout"; -@import "base"; -@import "partials"; -@import "plugins/**/*"; -@import "custom/styles"; diff --git a/.themes/classic/source/_includes/after_footer.html b/.themes/classic/source/_includes/after_footer.html deleted file mode 100644 index 08b8e34..0000000 --- a/.themes/classic/source/_includes/after_footer.html +++ /dev/null @@ -1,5 +0,0 @@ -{% include disqus.html %} -{% include facebook_like.html %} -{% include google_plus_one.html %} -{% include twitter_sharing.html %} -{% include custom/after_footer.html %} diff --git a/.themes/classic/source/_includes/archive_post.html b/.themes/classic/source/_includes/archive_post.html deleted file mode 100644 index 210dbbb..0000000 --- a/.themes/classic/source/_includes/archive_post.html +++ /dev/null @@ -1,8 +0,0 @@ -{% capture category %}{{ post.categories | size }}{% endcapture %} -

{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- -{% if category != '0' %} - -{% endif %} diff --git a/.themes/classic/source/_includes/article.html b/.themes/classic/source/_includes/article.html deleted file mode 100644 index 8427997..0000000 --- a/.themes/classic/source/_includes/article.html +++ /dev/null @@ -1,29 +0,0 @@ -{% unless page.no_header %} -
- {% if index %} -

{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- {% else %} -

{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

- {% endif %} - {% unless page.meta == false %} -

- {% include post/date.html %}{{ time }} - {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} - | Comments - {% endif %} -

- {% endunless %} -
-{% endunless %} -{% if index %} -
{{ content | excerpt }}
- {% capture excerpted %}{{ content | has_excerpt }}{% endcapture %} - {% if excerpted == 'true' %} - - {% endif %} -{% else %} -
{{ content }}
-{% endif %} diff --git a/.themes/classic/source/_includes/asides/delicious.html b/.themes/classic/source/_includes/asides/delicious.html deleted file mode 100644 index 115cdcb..0000000 --- a/.themes/classic/source/_includes/asides/delicious.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if site.delicious_user %} -
-

On Delicious

-
- -

My Delicious Bookmarks »

-
-{% endif %} \ No newline at end of file diff --git a/.themes/classic/source/_includes/asides/github.html b/.themes/classic/source/_includes/asides/github.html deleted file mode 100644 index b0bf959..0000000 --- a/.themes/classic/source/_includes/asides/github.html +++ /dev/null @@ -1,30 +0,0 @@ -{% if site.github_user %} -
-

GitHub Repos

- - {% if site.github_show_profile_link %} - @{{site.github_user}} on GitHub - {% endif %} - - -
-{% endif %} diff --git a/.themes/classic/source/_includes/asides/googleplus.html b/.themes/classic/source/_includes/asides/googleplus.html deleted file mode 100644 index 00a0aa8..0000000 --- a/.themes/classic/source/_includes/asides/googleplus.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.googleplus_user %} -
-

- - - Google+ - -

-
-{% endif %} - diff --git a/.themes/classic/source/_includes/asides/pinboard.html b/.themes/classic/source/_includes/asides/pinboard.html deleted file mode 100644 index c89c3e7..0000000 --- a/.themes/classic/source/_includes/asides/pinboard.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if site.pinboard_user %} -
-

My Pinboard

- -

My Pinboard Bookmarks »

-
- -{% endif %} diff --git a/.themes/classic/source/_includes/asides/recent_posts.html b/.themes/classic/source/_includes/asides/recent_posts.html deleted file mode 100644 index 4b10847..0000000 --- a/.themes/classic/source/_includes/asides/recent_posts.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

Recent Posts

- -
diff --git a/.themes/classic/source/_includes/custom/after_footer.html b/.themes/classic/source/_includes/custom/after_footer.html deleted file mode 100644 index bce25dd..0000000 --- a/.themes/classic/source/_includes/custom/after_footer.html +++ /dev/null @@ -1,3 +0,0 @@ -{% comment %} - Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example) -{% endcomment %} diff --git a/.themes/classic/source/_includes/custom/asides/about.html b/.themes/classic/source/_includes/custom/asides/about.html deleted file mode 100644 index 59d309e..0000000 --- a/.themes/classic/source/_includes/custom/asides/about.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

About Me

-

A little something about me.

-
diff --git a/.themes/classic/source/_includes/custom/category_feed.xml b/.themes/classic/source/_includes/custom/category_feed.xml deleted file mode 100644 index 8c93ed3..0000000 --- a/.themes/classic/source/_includes/custom/category_feed.xml +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: null ---- - - - - <![CDATA[{% if site.titlecase %}{{ page.title | titlecase | cdata_escape }}{% else %}{{ page.title | cdata_escape }}{% endif %} | {{ site.title | cdata_escape }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.categories[page.category] limit: 5 %} - - <![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/.themes/classic/source/_includes/custom/footer.html b/.themes/classic/source/_includes/custom/footer.html deleted file mode 100644 index e12f067..0000000 --- a/.themes/classic/source/_includes/custom/footer.html +++ /dev/null @@ -1,4 +0,0 @@ -

- Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} - - Powered by Octopress -

diff --git a/.themes/classic/source/_includes/custom/head.html b/.themes/classic/source/_includes/custom/head.html deleted file mode 100644 index 824a41e..0000000 --- a/.themes/classic/source/_includes/custom/head.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/.themes/classic/source/_includes/custom/header.html b/.themes/classic/source/_includes/custom/header.html deleted file mode 100644 index 35f9c05..0000000 --- a/.themes/classic/source/_includes/custom/header.html +++ /dev/null @@ -1,6 +0,0 @@ -
-

{{ site.title }}

- {% if site.subtitle %} -

{{ site.subtitle }}

- {% endif %} -
diff --git a/.themes/classic/source/_includes/custom/navigation.html b/.themes/classic/source/_includes/custom/navigation.html deleted file mode 100644 index d6bd424..0000000 --- a/.themes/classic/source/_includes/custom/navigation.html +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/.themes/classic/source/_includes/disqus.html b/.themes/classic/source/_includes/disqus.html deleted file mode 100644 index 49c6a29..0000000 --- a/.themes/classic/source/_includes/disqus.html +++ /dev/null @@ -1,21 +0,0 @@ -{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %} -{% if site.disqus_short_name and page.comments != false %} - -{% endif %} diff --git a/.themes/classic/source/_includes/facebook_like.html b/.themes/classic/source/_includes/facebook_like.html deleted file mode 100644 index d263e6d..0000000 --- a/.themes/classic/source/_includes/facebook_like.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.facebook_like %} -
- -{% endif %} diff --git a/.themes/classic/source/_includes/footer.html b/.themes/classic/source/_includes/footer.html deleted file mode 100644 index 3a8c768..0000000 --- a/.themes/classic/source/_includes/footer.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/footer.html %} diff --git a/.themes/classic/source/_includes/google_analytics.html b/.themes/classic/source/_includes/google_analytics.html deleted file mode 100644 index 4d4d596..0000000 --- a/.themes/classic/source/_includes/google_analytics.html +++ /dev/null @@ -1,13 +0,0 @@ -{% if site.google_analytics_tracking_id %} - -{% endif %} diff --git a/.themes/classic/source/_includes/google_plus_one.html b/.themes/classic/source/_includes/google_plus_one.html deleted file mode 100644 index b69ddae..0000000 --- a/.themes/classic/source/_includes/google_plus_one.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if site.google_plus_one %} - -{% endif %} diff --git a/.themes/classic/source/_includes/head.html b/.themes/classic/source/_includes/head.html deleted file mode 100644 index 3d2cc88..0000000 --- a/.themes/classic/source/_includes/head.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - {% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }} - - - {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} - - {% if page.keywords %}{% endif %} - - - - - - - {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' }}{% endif %}{% endcapture %} - - - - - - - - - {% include custom/head.html %} - {% include google_analytics.html %} - diff --git a/.themes/classic/source/_includes/header.html b/.themes/classic/source/_includes/header.html deleted file mode 100644 index 524de65..0000000 --- a/.themes/classic/source/_includes/header.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/header.html %} diff --git a/.themes/classic/source/_includes/navigation.html b/.themes/classic/source/_includes/navigation.html deleted file mode 100644 index a81efd5..0000000 --- a/.themes/classic/source/_includes/navigation.html +++ /dev/null @@ -1,15 +0,0 @@ - - {% if site.simple_search %} -
-
- - -
-
- {% endif %} -{% include custom/navigation.html %} diff --git a/.themes/classic/source/_includes/post/author.html b/.themes/classic/source/_includes/post/author.html deleted file mode 100644 index 83dd6a8..0000000 --- a/.themes/classic/source/_includes/post/author.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if post.author %} - {% assign author = post.author %} -{% elsif page.author %} - {% assign author = page.author %} -{% else %} - {% assign author = site.author %} -{% endif %} -{% if author %}Posted by {{ author }}{% endif %} diff --git a/.themes/classic/source/_includes/post/categories.html b/.themes/classic/source/_includes/post/categories.html deleted file mode 100644 index 4a98b29..0000000 --- a/.themes/classic/source/_includes/post/categories.html +++ /dev/null @@ -1,10 +0,0 @@ -{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} -{% unless category == '0' %} - - {% if post %} - {{ post.categories | category_links }} - {% else %} - {{ page.categories | category_links }} - {% endif %} - -{% endunless %} diff --git a/.themes/classic/source/_includes/post/date.html b/.themes/classic/source/_includes/post/date.html deleted file mode 100644 index a86953c..0000000 --- a/.themes/classic/source/_includes/post/date.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if page.date %}{% capture time %}{{ page.date_time_html }}{% endcapture %}{% endif %} -{% if post.date %}{% capture time %}{{ post.date_time_html }}{% endcapture %}{% endif %} - -{% if page.updated %}{% capture updated %}{{ page.date_time_updated_html }}{% endcapture %}{% endif %} -{% if post.updated %}{% capture updated %}{{ post.date_time_updated_html }}{% endcapture %}{% endif %} diff --git a/.themes/classic/source/_includes/post/disqus_thread.html b/.themes/classic/source/_includes/post/disqus_thread.html deleted file mode 100644 index b1acd8c..0000000 --- a/.themes/classic/source/_includes/post/disqus_thread.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.themes/classic/source/_includes/post/sharing.html b/.themes/classic/source/_includes/post/sharing.html deleted file mode 100644 index d639faa..0000000 --- a/.themes/classic/source/_includes/post/sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -
- {% if site.twitter_tweet_button %} - Tweet - {% endif %} - {% if site.google_plus_one %} -
- {% endif %} - {% if site.facebook_like %} -
- {% endif %} -
diff --git a/.themes/classic/source/_includes/twitter_sharing.html b/.themes/classic/source/_includes/twitter_sharing.html deleted file mode 100644 index 7cd5fbc..0000000 --- a/.themes/classic/source/_includes/twitter_sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.twitter_follow_button or site.twitter_tweet_button %} - -{% endif %} diff --git a/.themes/classic/source/_layouts/category_index.html b/.themes/classic/source/_layouts/category_index.html deleted file mode 100644 index 85a6307..0000000 --- a/.themes/classic/source/_layouts/category_index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -footer: false ---- - -
-{% for post in site.categories[page.category] %} -{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} -{% unless year == this_year %} - {% assign year = this_year %} -

{{ year }}

-{% endunless %} -
- {% include archive_post.html %} -
-{% endfor %} -
diff --git a/.themes/classic/source/_layouts/default.html b/.themes/classic/source/_layouts/default.html deleted file mode 100644 index f23b07b..0000000 --- a/.themes/classic/source/_layouts/default.html +++ /dev/null @@ -1,14 +0,0 @@ -{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %} -{% include head.html %} - -
{% include header.html %}
- -
-
- {{ content | expand_urls: root_url }} -
-
- - {% include after_footer.html %} - - diff --git a/.themes/classic/source/_layouts/page.html b/.themes/classic/source/_layouts/page.html deleted file mode 100644 index 8ba6ec9..0000000 --- a/.themes/classic/source/_layouts/page.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default ---- - -
-
- {% if page.title %} -
-

{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

- {% if page.date %}

{% include post/date.html %}{{ time }}

{% endif %} -
- {% endif %} - {{ content }} - {% unless page.footer == false %} -
- {% if page.date or page.author %}

- {% if page.author %}{% include post/author.html %}{% endif %} - {% include post/date.html %}{% if updated %}{{ updated }}{% else %}{{ time }}{% endif %} - {% if page.categories %}{% include post/categories.html %}{% endif %} -

{% endif %} - {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -
- {% endunless %} -
-{% if site.disqus_short_name and page.comments == true %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/.themes/classic/source/_layouts/post.html b/.themes/classic/source/_layouts/post.html deleted file mode 100644 index b450681..0000000 --- a/.themes/classic/source/_layouts/post.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -single: true ---- - -
-
- {% include article.html %} -
-

- {% include post/author.html %} - {% include post/date.html %}{{ time }}{% if updated %} {{ updated }}{% endif %} - {% include post/categories.html %} -

- {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -

- {% if page.previous.url %} - « {{page.previous.title}} - {% endif %} - {% if page.next.url %} - {{page.next.title}} » - {% endif %} -

-
-
-{% if site.disqus_short_name and page.comments == true %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/.themes/classic/source/atom.xml b/.themes/classic/source/atom.xml deleted file mode 100644 index 403328f..0000000 --- a/.themes/classic/source/atom.xml +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: null ---- - - - - <![CDATA[{{ site.title | cdata_escape }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.posts limit: 20 %} - - <![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/.themes/classic/source/blog/archives/index.html b/.themes/classic/source/blog/archives/index.html deleted file mode 100644 index f1d9cee..0000000 --- a/.themes/classic/source/blog/archives/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: Blog Archive -footer: false ---- - -
-{% for post in site.posts reverse %} -{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} -{% unless year == this_year %} - {% assign year = this_year %} -

{{ year }}

-{% endunless %} -
- {% include archive_post.html %} -
-{% endfor %} -
diff --git a/.themes/classic/source/index.html b/.themes/classic/source/index.html deleted file mode 100644 index 64b665e..0000000 --- a/.themes/classic/source/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default ---- - -
- {% assign index = true %} - {% for post in paginator.posts %} - {% assign content = post.content %} -
- {% include article.html %} -
- {% endfor %} - -
- diff --git a/.themes/classic/source/robots.txt b/.themes/classic/source/robots.txt deleted file mode 100644 index ee34c72..0000000 --- a/.themes/classic/source/robots.txt +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: null ---- -User-agent: * -Disallow: - -Sitemap: {{ site.url }}/sitemap.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b202491..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: ruby -rvm: - - 2.0.0 - - 1.9.3 -script: bundle exec rake install; bundle exec rake generate diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 5683812..0000000 --- a/Gemfile +++ /dev/null @@ -1,18 +0,0 @@ -source "https://rubygems.org" - -group :development do - gem 'rake', '~> 10.0' - gem 'jekyll', '~> 2.0' - gem 'octopress-hooks', '~> 2.2' - gem 'octopress-date-format', '~> 2.0' - gem 'jekyll-sitemap' - gem 'rdiscount', '~> 2.0' - gem 'RedCloth', '~> 4.2.9' - gem 'haml', '~> 4.0' - gem 'compass', '~> 1.0.1' - gem 'sass-globbing', '~> 1.0.0' - gem 'rb-fsevent', '~> 0.9' - gem 'stringex', '~> 1.4.0' -end - -gem 'sinatra', '~> 1.4.2' diff --git a/Rakefile b/Rakefile deleted file mode 100644 index efd5dc9..0000000 --- a/Rakefile +++ /dev/null @@ -1,406 +0,0 @@ -require "rubygems" -require "bundler/setup" -require "stringex" - -## -- Rsync Deploy config -- ## -# Be sure your public key is listed in your server's ~/.ssh/authorized_keys file -ssh_user = "user@domain.com" -ssh_port = "22" -document_root = "~/website.com/" -rsync_delete = false -rsync_args = "" # Any extra arguments to pass to rsync -deploy_default = "push" - -# This will be configured for you when you run config_deploy -deploy_branch = "master" - -## -- Misc Configs -- ## - -public_dir = "public" # compiled site directory -source_dir = "source" # source file directory -blog_index_dir = 'source' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') -deploy_dir = "_deploy" # deploy directory (for Github pages deployment) -stash_dir = "_stash" # directory to stash posts for speedy generation -posts_dir = "_posts" # directory for blog files -themes_dir = ".themes" # directory for blog files -new_post_ext = "markdown" # default new post file extension when using the new_post task -new_page_ext = "markdown" # default new page file extension when using the new_page task -server_port = "4000" # port for preview server eg. localhost:4000 - -if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil - puts '## Set the codepage to 65001 for Windows machines' - `chcp 65001` -end - -desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]" -task :install, :theme do |t, args| - if File.directory?(source_dir) || File.directory?("sass") - abort("rake aborted!") if ask("A theme is already installed, proceeding will overwrite existing files. Are you sure?", ['y', 'n']) == 'n' - end - # copy theme into working Jekyll directories - theme = args.theme || 'classic' - puts "## Copying "+theme+" theme into ./#{source_dir} and ./sass" - mkdir_p source_dir - cp_r "#{themes_dir}/#{theme}/source/.", source_dir - mkdir_p "sass" - cp_r "#{themes_dir}/#{theme}/sass/.", "sass" - mkdir_p "#{source_dir}/#{posts_dir}" - mkdir_p public_dir -end - -####################### -# Working with Jekyll # -####################### - -desc "Generate jekyll site" -task :generate do - raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir) - puts "## Generating Site with Jekyll" - system "compass compile --css-dir #{source_dir}/stylesheets" - system "jekyll build" -end - -desc "Watch the site and regenerate when it changes" -task :watch do - raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir) - puts "Starting to watch source with Jekyll and Compass." - system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css") - jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build --watch") - compassPid = Process.spawn("compass watch") - - trap("INT") { - [jekyllPid, compassPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH } - exit 0 - } - - [jekyllPid, compassPid].each { |pid| Process.wait(pid) } -end - -desc "preview the site in a web browser" -task :preview do - raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir) - puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}" - system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css") - jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build --watch") - compassPid = Process.spawn("compass watch") - rackupPid = Process.spawn("rackup --port #{server_port}") - - trap("INT") { - [jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH } - exit 0 - } - - [jekyllPid, compassPid, rackupPid].each { |pid| Process.wait(pid) } -end - -# usage rake new_post[my-new-post] or rake new_post['my new post'] or rake new_post (defaults to "new-post") -desc "Begin a new post in #{source_dir}/#{posts_dir}" -task :new_post, :title do |t, args| - if args.title - title = args.title - else - title = get_stdin("Enter a title for your post: ") - end - raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir) - mkdir_p "#{source_dir}/#{posts_dir}" - filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}" - if File.exist?(filename) - abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n' - end - puts "Creating new post: #{filename}" - open(filename, 'w') do |post| - post.puts "---" - post.puts "layout: post" - post.puts "title: \"#{title.gsub(/&/,'&')}\"" - post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}" - post.puts "comments: true" - post.puts "categories: " - post.puts "---" - end -end - -# usage rake new_page[my-new-page] or rake new_page[my-new-page.html] or rake new_page (defaults to "new-page.markdown") -desc "Create a new page in #{source_dir}/(filename)/index.#{new_page_ext}" -task :new_page, :filename do |t, args| - raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir) - args.with_defaults(:filename => 'new-page') - page_dir = [source_dir] - if args.filename.downcase =~ /(^.+\/)?(.+)/ - filename, dot, extension = $2.rpartition('.').reject(&:empty?) # Get filename and extension - title = filename - page_dir.concat($1.downcase.sub(/^\//, '').split('/')) unless $1.nil? # Add path to page_dir Array - if extension.nil? - page_dir << filename - filename = "index" - end - extension ||= new_page_ext - page_dir = page_dir.map! { |d| d = d.to_url }.join('/') # Sanitize path - filename = filename.downcase.to_url - - mkdir_p page_dir - file = "#{page_dir}/#{filename}.#{extension}" - if File.exist?(file) - abort("rake aborted!") if ask("#{file} already exists. Do you want to overwrite?", ['y', 'n']) == 'n' - end - puts "Creating new page: #{file}" - open(file, 'w') do |page| - page.puts "---" - page.puts "layout: page" - page.puts "title: \"#{title}\"" - page.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}" - page.puts "comments: true" - page.puts "sharing: true" - page.puts "footer: true" - page.puts "---" - end - else - puts "Syntax error: #{args.filename} contains unsupported characters" - end -end - -# usage rake isolate[my-post] -desc "Move all other posts than the one currently being worked on to a temporary stash location (stash) so regenerating the site happens much more quickly." -task :isolate, :filename do |t, args| - stash_dir = "#{source_dir}/#{stash_dir}" - FileUtils.mkdir(stash_dir) unless File.exist?(stash_dir) - Dir.glob("#{source_dir}/#{posts_dir}/*.*") do |post| - FileUtils.mv post, stash_dir unless post.include?(args.filename) - end -end - -desc "Move all stashed posts back into the posts directory, ready for site generation." -task :integrate do - FileUtils.mv Dir.glob("#{source_dir}/#{stash_dir}/*.*"), "#{source_dir}/#{posts_dir}/" -end - -desc "Clean out caches: .pygments-cache, .gist-cache, .sass-cache" -task :clean do - rm_rf [Dir.glob(".pygments-cache/**"), Dir.glob(".gist-cache/**"), Dir.glob(".sass-cache/**"), "source/stylesheets/screen.css"] -end - -desc "Move sass to sass.old, install sass theme updates, replace sass/custom with sass.old/custom" -task :update_style, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("sass.old") - puts "removed existing sass.old directory" - rm_r "sass.old", :secure=>true - end - mv "sass", "sass.old" - puts "## Moved styles into sass.old/" - cp_r "#{themes_dir}/"+theme+"/sass/", "sass", :remove_destination=>true - cp_r "sass.old/custom/.", "sass/custom/", :remove_destination=>true - puts "## Updated Sass ##" -end - -desc "Move source to source.old, install source theme updates, replace source/_includes/navigation.html with source.old's navigation" -task :update_source, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("#{source_dir}.old") - puts "## Removed existing #{source_dir}.old directory" - rm_r "#{source_dir}.old", :secure=>true - end - mkdir "#{source_dir}.old" - cp_r "#{source_dir}/.", "#{source_dir}.old" - puts "## Copied #{source_dir} into #{source_dir}.old/" - cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true - cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true - cp "#{source_dir}.old/favicon.png", source_dir - mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir - cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir && File.exists?("#{source_dir}.old/index.html") - puts "## Updated #{source_dir} ##" -end - -############## -# Deploying # -############## - -desc "Default deploy task" -task :deploy do - # Check if preview posts exist, which should not be published - if File.exists?(".preview-mode") - puts "## Found posts in preview mode, regenerating files ..." - File.delete(".preview-mode") - Rake::Task[:generate].execute - end - - Rake::Task[:copydot].invoke(source_dir, public_dir) - Rake::Task["#{deploy_default}"].execute -end - -desc "Generate website and deploy" -task :gen_deploy => [:integrate, :generate, :deploy] do -end - -desc "copy dot files for deployment" -task :copydot, :source, :dest do |t, args| - FileList["#{args.source}/**/.*"].exclude("**/.", "**/..", "**/.DS_Store", "**/._*").each do |file| - cp_r file, file.gsub(/#{args.source}/, "#{args.dest}") unless File.directory?(file) - end -end - -desc "Deploy website via rsync" -task :rsync do - exclude = "" - if File.exists?('./rsync-exclude') - exclude = "--exclude-from '#{File.expand_path('./rsync-exclude')}'" - end - puts "## Deploying website via Rsync" - ok_failed system("rsync -avze 'ssh -p #{ssh_port}' #{exclude} #{rsync_args} #{"--delete" unless rsync_delete == false} #{public_dir}/ #{ssh_user}:#{document_root}") -end - -desc "deploy public directory to github pages" -multitask :push do - puts "## Deploying branch to Github Pages " - puts "## Pulling any updates from Github Pages " - cd "#{deploy_dir}" do - Bundler.with_clean_env { system "git pull" } - end - (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) } - Rake::Task[:copydot].invoke(public_dir, deploy_dir) - puts "\n## Copying #{public_dir} to #{deploy_dir}" - cp_r "#{public_dir}/.", deploy_dir - cd "#{deploy_dir}" do - system "git add -A" - message = "Site updated at #{Time.now.utc}" - puts "\n## Committing: #{message}" - system "git commit -m \"#{message}\"" - puts "\n## Pushing generated #{deploy_dir} website" - Bundler.with_clean_env { system "git push origin #{deploy_branch}" } - puts "\n## Github Pages deploy complete" - end -end - -desc "Update configurations to support publishing to root or sub directory" -task :set_root_dir, :dir do |t, args| - puts ">>> !! Please provide a directory, eg. rake config_dir[publishing/subdirectory]" unless args.dir - if args.dir - if args.dir == "/" - dir = "" - else - dir = "/" + args.dir.sub(/(\/*)(.+)/, "\\2").sub(/\/$/, ''); - end - rakefile = IO.read(__FILE__) - rakefile.sub!(/public_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "public_dir\\1=\\2\\3public#{dir}\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - compass_config = IO.read('config.rb') - compass_config.sub!(/http_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_path\\1=\\2\\3#{dir}/\\3") - compass_config.sub!(/http_images_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_images_path\\1=\\2\\3#{dir}/images\\3") - compass_config.sub!(/http_fonts_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_fonts_path\\1=\\2\\3#{dir}/fonts\\3") - compass_config.sub!(/css_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "css_dir\\1=\\2\\3public#{dir}/stylesheets\\3") - File.open('config.rb', 'w') do |f| - f.write compass_config - end - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^destination:.+$/, "destination: public#{dir}") - jekyll_config.sub!(/^subscribe_rss:\s*\/.+$/, "subscribe_rss: #{dir}/atom.xml") - jekyll_config.sub!(/^root:.*$/, "root: /#{dir.sub(/^\//, '')}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf public_dir - mkdir_p "#{public_dir}#{dir}" - puts "## Site's root directory is now '/#{dir.sub(/^\//, '')}' ##" - end -end - -desc "Set up _deploy folder and deploy branch for Github Pages deployment" -task :setup_github_pages, :repo do |t, args| - if args.repo - repo_url = args.repo - else - puts "Enter the read/write url for your repository" - puts "(For example, 'git@github.com:your_username/your_username.github.io.git)" - puts " or 'https://github.com/your_username/your_username.github.io')" - repo_url = get_stdin("Repository url: ") - end - protocol = (repo_url.match(/(^git)@/).nil?) ? 'https' : 'git' - if protocol == 'git' - user = repo_url.match(/:([^\/]+)/)[1] - else - user = repo_url.match(/github\.com\/([^\/]+)/)[1] - end - branch = (repo_url.match(/\/[\w-]+\.github\.(?:io|com)/).nil?) ? 'gh-pages' : 'master' - project = (branch == 'gh-pages') ? repo_url.match(/([^\/]+?)(\.git|$)/i)[1] : '' - unless (`git remote -v` =~ /origin.+?octopress(?:\.git)?/).nil? - # If octopress is still the origin remote (from cloning) rename it to octopress - system "git remote rename origin octopress" - if branch == 'master' - # If this is a user/organization pages repository, add the correct origin remote - # and checkout the source branch for committing changes to the blog source. - system "git remote add origin #{repo_url}" - puts "Added remote #{repo_url} as origin" - system "git config branch.master.remote origin" - puts "Set origin as default remote" - system "git branch -m master source" - puts "Master branch renamed to 'source' for committing your blog source files" - else - unless !public_dir.match("#{project}").nil? - system "rake set_root_dir[#{project}]" - end - end - end - url = blog_url(user, project, source_dir) - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^url:.*$/, "url: #{url}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf deploy_dir - mkdir deploy_dir - cd "#{deploy_dir}" do - system "git init" - system 'echo "My Octopress Page is coming soon …" > index.html' - system "git add ." - system "git commit -m \"Octopress init\"" - system "git branch -m gh-pages" unless branch == 'master' - system "git remote add origin #{repo_url}" - rakefile = IO.read(__FILE__) - rakefile.sub!(/deploy_branch(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_branch\\1=\\2\\3#{branch}\\3") - rakefile.sub!(/deploy_default(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_default\\1=\\2\\3push\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - end - puts "\n---\n## Now you can deploy to #{repo_url} with `rake deploy` ##" -end - -def ok_failed(condition) - if (condition) - puts "OK" - else - puts "FAILED" - end -end - -def get_stdin(message) - print message - STDIN.gets.chomp -end - -def ask(message, valid_options) - if valid_options - answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.include?(answer) - else - answer = get_stdin(message) - end - answer -end - -def blog_url(user, project, source_dir) - cname = "#{source_dir}/CNAME" - url = if File.exists?(cname) - "http://#{IO.read(cname).strip}" - else - "http://#{user.downcase}.github.io" - end - url += "/#{project}" unless project == '' - url -end - -desc "list tasks" -task :list do - puts "Tasks: #{(Rake::Task.tasks - [Rake::Task[:list]]).join(', ')}" - puts "(type rake -T for more detail)\n\n" -end diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 1f15ceb..0000000 --- a/_config.yml +++ /dev/null @@ -1,107 +0,0 @@ -# ----------------------- # -# Main Configs # -# ----------------------- # - -url: http://devopsysadmin.github.io -title: /sys/admin -subtitle: 'Blog de/para sysadmins, pequeños programadores y fans de GNU/Linux' -author: David PG -simple_search: https://www.google.com/search -description: - -# Default date format is "ordinal" (resulting in "July 22nd 2007") -# You can customize the format as defined in -# http://www.ruby-doc.org/core-1.9.2/Time.html#method-i-strftime -# Additionally, %o will give you the ordinal representation of the day -date_format: "ordinal" - -# RSS / Email (optional) subscription links (change if using something like Feedburner) -subscribe_rss: /atom.xml -subscribe_email: -# RSS feeds can list your email address if you like -email: - -# ----------------------- # -# Jekyll & Plugins # -# ----------------------- # - -# If publishing to a subdirectory as in http://site.com/project set 'root: /project' -root: / -permalink: /blog/:year/:month/:day/:title/ -source: source -destination: public -plugins: plugins -code_dir: downloads/code -category_dir: blog/categories -markdown: rdiscount -rdiscount: - extensions: - - autolink - - footnotes - - smart -highlighter: pygments # default python pygments have been replaced by pygments.rb - -paginate: 10 # Posts per page on the blog index -paginate_path: "posts/:num" # Directory base for pagination URLs eg. /posts/2/ -recent_posts: 5 # Posts in the sidebar Recent Posts section -excerpt_link: "Read on →" # "Continue reading" link text at the bottom of excerpted articles -excerpt_separator: "" - -titlecase: true # Converts page and post titles to titlecase - -# list each of the sidebar modules you want to include, in the order you want them to appear. -# To add custom asides, create files in /source/_includes/custom/asides/ and add them to the list like 'custom/asides/custom_aside_name.html' -default_asides: [ custom/asides/category_cloud.html, asides/recent_posts.html, asides/github.html, asides/delicious.html, asides/pinboard.html, asides/googleplus.html] - -# Each layout uses the default asides, but they can have their own asides instead. Simply uncomment the lines below -# and add an array with the asides you want to use. -# blog_index_asides: -# post_asides: -# page_asides: - -# ----------------------- # -# 3rd Party Settings # -# ----------------------- # - -# Github repositories -github_user: devopsysadmin -github_repo_count: 0 -github_show_profile_link: true -github_skip_forks: true - -# Twitter -twitter_user: david_3pwood -twitter_tweet_button: true -twitter_bubble: vertical - -# Google +1 -google_plus_one: true -google_plus_one_size: tall - -# Google Plus Profile -# Hidden: No visible button, just add author information to search results -googleplus_user: david.3pwood -googleplus_hidden: true - -# Pinboard -pinboard_user: -pinboard_count: 3 - -# Delicious -delicious_user: -delicious_count: 3 - -# Disqus Comments -disqus_short_name: devopsysadmin -disqus_show_comment_count: true - -# Google Analytics -google_analytics_tracking_id: UA-68777841-1 - -# Facebook Like -facebook_like: true -facebook_button_layout: box_count - -# LinkedIn Share -linkedin_share: true -linkedin_counter: top \ No newline at end of file diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png b/assets/jwplayer/glow/controlbar/background.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/background.png rename to assets/jwplayer/glow/controlbar/background.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/blankButton.png b/assets/jwplayer/glow/controlbar/blankButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/blankButton.png rename to assets/jwplayer/glow/controlbar/blankButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png b/assets/jwplayer/glow/controlbar/divider.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/divider.png rename to assets/jwplayer/glow/controlbar/divider.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/assets/jwplayer/glow/controlbar/fullscreenButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png rename to assets/jwplayer/glow/controlbar/fullscreenButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png rename to assets/jwplayer/glow/controlbar/fullscreenButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButton.png b/assets/jwplayer/glow/controlbar/muteButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/muteButton.png rename to assets/jwplayer/glow/controlbar/muteButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/assets/jwplayer/glow/controlbar/muteButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png rename to assets/jwplayer/glow/controlbar/muteButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/assets/jwplayer/glow/controlbar/normalscreenButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png rename to assets/jwplayer/glow/controlbar/normalscreenButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png rename to assets/jwplayer/glow/controlbar/normalscreenButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png b/assets/jwplayer/glow/controlbar/pauseButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png rename to assets/jwplayer/glow/controlbar/pauseButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/assets/jwplayer/glow/controlbar/pauseButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png rename to assets/jwplayer/glow/controlbar/pauseButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButton.png b/assets/jwplayer/glow/controlbar/playButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/playButton.png rename to assets/jwplayer/glow/controlbar/playButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/assets/jwplayer/glow/controlbar/playButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png rename to assets/jwplayer/glow/controlbar/playButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/assets/jwplayer/glow/controlbar/timeSliderBuffer.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png rename to assets/jwplayer/glow/controlbar/timeSliderBuffer.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png rename to assets/jwplayer/glow/controlbar/timeSliderCapLeft.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/assets/jwplayer/glow/controlbar/timeSliderCapRight.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png rename to assets/jwplayer/glow/controlbar/timeSliderCapRight.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png b/assets/jwplayer/glow/controlbar/timeSliderProgress.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png rename to assets/jwplayer/glow/controlbar/timeSliderProgress.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/assets/jwplayer/glow/controlbar/timeSliderRail.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png rename to assets/jwplayer/glow/controlbar/timeSliderRail.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/assets/jwplayer/glow/controlbar/unmuteButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png rename to assets/jwplayer/glow/controlbar/unmuteButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/assets/jwplayer/glow/controlbar/unmuteButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png rename to assets/jwplayer/glow/controlbar/unmuteButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/background.png b/assets/jwplayer/glow/display/background.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/background.png rename to assets/jwplayer/glow/display/background.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png b/assets/jwplayer/glow/display/bufferIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png rename to assets/jwplayer/glow/display/bufferIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png b/assets/jwplayer/glow/display/muteIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/muteIcon.png rename to assets/jwplayer/glow/display/muteIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png b/assets/jwplayer/glow/display/playIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/playIcon.png rename to assets/jwplayer/glow/display/playIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/dock/button.png b/assets/jwplayer/glow/dock/button.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/dock/button.png rename to assets/jwplayer/glow/dock/button.png diff --git a/.themes/classic/source/assets/jwplayer/glow/glow.xml b/assets/jwplayer/glow/glow.xml similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/glow.xml rename to assets/jwplayer/glow/glow.xml diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png b/assets/jwplayer/glow/playlist/item.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/item.png rename to assets/jwplayer/glow/playlist/item.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png b/assets/jwplayer/glow/playlist/itemOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png rename to assets/jwplayer/glow/playlist/itemOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/assets/jwplayer/glow/playlist/sliderCapBottom.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png rename to assets/jwplayer/glow/playlist/sliderCapBottom.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/assets/jwplayer/glow/playlist/sliderCapTop.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png rename to assets/jwplayer/glow/playlist/sliderCapTop.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png b/assets/jwplayer/glow/playlist/sliderRail.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png rename to assets/jwplayer/glow/playlist/sliderRail.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderThumb.png b/assets/jwplayer/glow/playlist/sliderThumb.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderThumb.png rename to assets/jwplayer/glow/playlist/sliderThumb.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedIcon.png b/assets/jwplayer/glow/sharing/embedIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/embedIcon.png rename to assets/jwplayer/glow/sharing/embedIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png b/assets/jwplayer/glow/sharing/embedScreen.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png rename to assets/jwplayer/glow/sharing/embedScreen.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png b/assets/jwplayer/glow/sharing/shareIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png rename to assets/jwplayer/glow/sharing/shareIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png b/assets/jwplayer/glow/sharing/shareScreen.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png rename to assets/jwplayer/glow/sharing/shareScreen.png diff --git a/.themes/classic/source/assets/jwplayer/player.swf b/assets/jwplayer/player.swf similarity index 100% rename from .themes/classic/source/assets/jwplayer/player.swf rename to assets/jwplayer/player.swf diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..a42006d --- /dev/null +++ b/atom.xml @@ -0,0 +1,321 @@ + + + + <![CDATA[/sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[From Debian to Arch: Not as Difficult, Nor Simple Either]]> + + 2015-10-13T20:40:20+02:00 + http://devopsysadmin.github.io/blog/2015/10/13/from-debian-to-arch-not-as-difficult + Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+]]>
+
+ + + <![CDATA[Passwords Con Caracteres Aleatorios]]> + + 2015-02-23T16:01:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/23/passwords-con-caracteres-aleatorios + En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento "@".

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import string,random,sys
+
+dictionary = string.ascii_letters + string.digits
+dictionary_extra = '@.-!~'
+N = 10
+
+if(len(sys.argv)>1):
+	if(sys.argv[1][0]=='@'):
+		dictionary += dictionary_extra
+		if(len(sys.argv[1])>1):
+			N=int(sys.argv[1][1:])
+		else:
+			N = int(sys.argv[1])
+print ''.join(random.SystemRandom().choice(dictionary) for _ in range(N))
+ + +

Ejemplos de uso:
+

+$ python randompasswd @20
+Dk5nl8w~.WxrkEj94!V~
+
+$ python randompasswd @
+0KAiU0z@rC
+
+$ python randompasswd
+eqUL9Kaw22G1QFc
+
]]>
+
+ + + <![CDATA[Sendlines, Un Expect Simplificado]]> + + 2015-02-19T17:17:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado + Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import subprocess
+import time
+import sys, getopt
+
+def run(cmd,textFile,delay):
+	with open(textFile,'r') as text:
+		content=text.readlines()
+	p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+	for line in content:
+		p.stdin.write(line+'\n')
+		if(delay): time.sleep(float(delay))
+	p.communicate()[0]
+	p.stdin.close()
+
+def usage():
+	print '''
+		Usage: sendlines -f textFile -c "COMMAND" [ -d DELAY ]
+		- textFile: Text file where read lines from. Mandatory.
+		- COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+		- DELAY: Time (in seconds) to wait between sending lines. Optional.
+		'''
+if __name__ == "__main__":
+	textFile = None
+	command = None
+	delay = None
+	try:
+		opts, args = getopt.getopt(sys.argv[1:], "f:c:d:", ["file=", "command=", "delay="])
+	except getopt.GetoptError as err:
+		# print help information and exit:
+		print str(err) # will print something like "option -a not recognized"
+		sys.exit(2)
+	for o, a in opts:
+		if o in ("-f", "--file"):
+			textFile = a
+		elif o in ("-c", "--command"):
+			command = a.split(' ')
+		elif o in ("-d", "--delay"):
+			delay = a
+		else:
+			assert False, "unhandled option"
+			usage()
+	if(command and textFile):
+		run(command,textFile,delay)
+	else:
+		usage()
+		print 'Missing argument(s). Exit\n'
+		sys.exit(2)
]]>
+
+ + + <![CDATA[Hacer Un Pg_dump Aprovechando Los Cores De La Máquina]]> + + 2015-02-17T16:06:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los + Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+

En una forma rápida, podemos lanzar este proceso:

+

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ +
#!/bin/bash
+## This script will create a backup for each database listed in the DATABASES variable
+## Use as postgres user or add the -U [username] to the pg_dump line
+
+DATABASES="template1 db other_db"
+CORES=`nproc`
+TARGET_FOLDER=/var/backups
+
+for DATABASE in $DATABASES; do
+	mkdir -p $TARGET_FOLDER/$DATABASE
+	pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done
]]>
+
+ + + <![CDATA[Recuperando El Blog]]> + + 2015-02-17T15:24:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/17/recuperando-el-blog +
Han pasado unas cuantas (CUANTAS) cosas desde que hice mi última entrada, tanto en mi vida como en el mundo linux. Desconozco la frecuencia con la que escribiré de nuevo, pero quiero darle un uso de sysadmin a este pobre blog, añadiendo trucos, utilidades y tuneaje, aparte de hablar de los pequeños proyectos que tengo en GitHub.

Así que, abracetes y ¡let the Hunger Games begin!]]>
+
+ + + <![CDATA[Debian 5.0 "Lenny" Lanzado]]> + + 2009-02-14T12:48:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/14/kde-50-lanzado +
Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D]]>
+
+ + + <![CDATA[Repositorio Para Testing/amd64]]> + + 2009-02-08T00:51:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/08/repositorio-para-testingamd64 +
Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main]]>
+
+ + + <![CDATA[Crítica Humorística a Wine]]> + + 2009-01-14T15:30:00+01:00 + http://devopsysadmin.github.io/blog/2009/01/14/critica-humoristica-wine +
No obstante, y pretendiendo ser realistas, las implementaciones del código aún distan de ser suficientes para permitir cualquier juego. Si bien puedo hacer que funcionen títulos como "Tomb Raider Anniversary", "World of Warcraft" o "The Witcher", en algunos otros casos debemos decir que sí, que ejecutarse se ejecuta, pero aún queda para decir que es "jugable". Por lo menos a ojos del equipo de desarrollo del videojuego.

Tal es el caso del Principe de Persia 2008, calidad artística donde las haya, que puede instalarse en Linux (eso nos cuentan los chicos de PlayOnLinux) aunque yo diría que lo que puede hacerse es "ejecutarse": hay que bajar la resolución al mínimo, quitar las texturas HD... en fin, y cuando consigues que funcione, ve guardando cada poco, que puede írsete al cuerno y aparecer tu bonito escritorio (con compiz o sin él).

Os pongo una muestra de cómo queda el juego según la plataforma:

Win/XBox360

pop_win_cara
pop_win_paisaje

Linux, sin texturas, a baja resolución, rezándole a algún beato:

pop_linux_cara pop_linux_paisaje

Bueno, os dejo que tengo un mago que se no sube de nivel solito. Que vuestros días sean largos, y escasos los contratiempos ;)]]>
+
+ + + <![CDATA[Nokia Añade La Licencia LGPL a QT]]> + + 2009-01-14T12:31:00+01:00 + http://devopsysadmin.github.io/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt + Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
]]>
+
+ + + <![CDATA[Avidemux "a-la-QT"]]> + + 2008-11-14T16:52:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/14/avidemux + Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt]]>
+
+ + + <![CDATA[Estado Actual De K3b]]> + + 2008-11-07T23:17:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/estado-actual-de-k3b +
Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es "sólo" la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.]]>
+
+ + + <![CDATA[Objetivos Y Mejoras De KDE 4.2]]> + + 2008-11-07T20:20:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/objetivos-y-mejoras-de-kde-42 +
Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes "Plasmagik" (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo "VI") en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • "Modo administrador" en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado.]]>
+
+ + + <![CDATA[QT Creator, ¿un Posible RAD Para QT/KDE?]]> + + 2008-10-31T16:46:00+01:00 + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde +
QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator]]>
+
+ + + <![CDATA[KDE 4.2 "Arreglará" Los Mensajes Emergentes]]> + + 2008-10-22T11:17:00+02:00 + http://devopsysadmin.github.io/blog/2008/10/22/kde-42-los-mensajes-emergentes + planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el "arreglo" de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide "systray", de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha "plasmizado" para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de "KDE4 no es KDE 4.0" y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html]]>
+
+ + + <![CDATA[Virtualbox 2.0 También Es QT4]]> + + 2008-09-24T22:52:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/24/virtualbox-20-tambien-es-qt4 + VLC nos diera la sorpresa de pasar sus widgets a QT4, resulta que VirtualBox, el virtualizador de sistemas operativos, también se pasa a estas librerías para mostrarnos su intefaz.

Aunque la configuración de la red más allá de virtualizar un sistema operativo resulta algo engorrosa, este programa hace auténticas virguerías en conseguir una virtualización casi perfecta (hay muchos artículos que explican cómo ejecutar una aplicación windows en un escritorio linux a través de VirtualBox y RDP) y es altamente recomendable para los que les guste probar distribuciones de linux, o experimentar con SSOO limpios o arreglados según la necesidad.

Puesto que la noticia la he leído en KDE-Hispano y a ellos pertenecen las capturas que he visto, os dejo el enlace para que le echeis un ojo: http://www.kdehispano.es/?q=content/lanzado-virtualbox-20]]>
+
+ + + <![CDATA[VLC 0.9.2, Con Interfaz QT4]]> + + 2008-09-22T23:01:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/22/vlc-092-con-interfaz-qt4 + VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro "Debian-like" que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con "su" o con "sudo", y que no hay salto de línea):
# echo "deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse" > /etc/apt/sources.list.d/ubuntu.list
# echo "deb http://ppa.launchpad.net/c-korn/ubuntu hardy main" >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y --purge remove vlc-* ; apt-get install -y --force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list ... Ahora vamos a darle un aspecto "más KDE". Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos "todo" (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

]]>
+
+ + + <![CDATA[Vuelta a Debian]]> + + 2008-09-10T18:48:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/10/vuelta-debian + kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes "testing", a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución.]]>
+
+ + + <![CDATA[KDE 4.1 Ya Tiene Una Alfa]]> + + 2008-05-01T13:28:00+02:00 + http://devopsysadmin.github.io/blog/2008/05/01/kde-41-ya-tiene-una-alfa + cygwin, y en cierto modo así es. Sin embargo, cygwin es una capa que instala las aplicaciones que así lo permiten, y KDE 4.1 será completamente nativo. No creo que sea necesario decir que difícilmente se trasladará el escritorio, sino más bien las aplicaciones que sobre él corren. Imaginaos, por ejemplo, la introducción de amaroK en el mundo windows: cuidado Winamp, cuidado iTunes. En el campo del correo electrónico, imaginaos un kmail que fuera válido tanto para empresa como para particulares. En el de mensajería (quitando el famoso pidgin), kopete con su posibilidad de multiprotocolo (MSN, AIM, Yahoo IM, gTalk/Jabber, IRC...). En fin, el lector menos avispado notará que se me está haciendo la boca agua. No es para menos, ya que también es un camino que allana la migración de los usuarios a sistemas abiertos (FreeBSD, OpenSolaris, Linux). Primero se le acostumbra al nuevo conjunto de aplicaciones, se le explica sus bondades y demuestra su utilidad, y poco a poco, cuando se encuentre cómodo, ¡ZAS! En toda la boc... esteee... se le cambia el sistema operativo. Nota para hoygans: chavales, si os aparece una palabra subrayada en rojo ondulado, no significa que el programa la considere importante. Es que está mal escrita. (Ventajas del aspell en todo lo que huele a KDE).]]> + + + + <![CDATA[KDE 4.0 No Es KDE4]]> + + 2008-01-03T12:25:00+01:00 + http://devopsysadmin.github.io/blog/2008/01/03/kde-40-no-es-kde4 + Hago CopyPaste de un post en kdehispano.org que me ha parecido de lo más acertado en lo que será y lo que no será KDE 4.0:
Como ya digo más abajo, ya hace un año que se hablaba de que KDE 4.0 no iba a ser KDE4. No es cierto que «les ha pillado el toro [...] y que ahora se excusan con lo de sacar el producto a plazos [...] como Akonadi»; hace mucho tiempo que ciertas cosas, como Akonadi, estaban descartadas para KDE 4.0. Aquí mismo en KDEHispano hubo una encuesta que preguntaba qué versión de KDE4 iba a utilizar y una de las respuestas era directamente KDE 4.1, dando por hecho que la versión KDE 4.0 no iba a estar precisamente completa. Pero el asunto no está en discutir si KDE 4.0 está acabado o no, o si lo han sacado deprisa y corriendo o más o menos acorde a sus planes. El asunto es que desde el equipo de KDE (y creo que no sólo desde ahí) se percibe una exagerada expectación ante KDE 4.0, por que el público en general tiende a confundir ambas cosas, y se espera que KDE 4.0 sea la repanocha, cuando lo cierto es que en ciertos ámbitos veremos claramente recortadas las funcionalidades respecto a la última versión de la serie 3.x.


¿Qué temen? Que cuando KDE 4.0 salga a la calle sea públicamente ajusticiado por la parte más «inculta» en asuntos de desarrollo de software de la fauna que puebla el bosque digital que es Internet, es decir, periodistas en busca de sangre sensacionalista, blogueros compulsivos sin visión, comentaristas anónimos y no tan anónimos con la misma falta de visión y más ganas aún de carnaza, y otros chascarristas y descerebrados varios. Y tendrán razón en que KDE 4.0 supone un cierto retroceso en ciertas cosas, tan cierto como que supone un gran avance en otras cosas que están ocultas, en las infraestructuras. Por que estos personajes probablemente no pasarán de echar un rápido vistazo a algún LiveCD, ejecutarán un par de plasmoides y poco más. Y eso será terriblemente injusto.


Por ejemplo, miedo me dan los comentarios que se puedan hacer al respecto de KDE 4.0 en Meneame por parte de los más descerebrados y toda la posible audiencia que pueda leerlos. ¿Y después? Cuando a finales de año salga KDE 4.1 y ya empiece a ser la mencionada repanocha todo el mundo recordará lo malo que (supuestamente) era antes y habrá que vencer una resistencia artificialmente construida en base a esa errónea percepción de la versión 4.0. Así que este tipo de mensajes trata de recordar que las funcionalidades de KDE4 se irán alcanzando según avance el ciclo de vida del software. Desde luego, si luego resulta KDE 4.0 es un desastre habrá que criticarlo sin miramientos, por que ocultar la verdad no sirve de nada y no es desde luego el estilo del mundo del software libre (ocultismos y otras negras artes las dejamos para otros).


En resumen, que hay que tratar de hacer críticas acertadas, con conocimiento de causa. Brevemente: sí, faltarán cosas; sí, estábamos avisados, sí, probablemente pretendían tener más cosas listas; sí, tienen miedo a la reacción de la «crítica rápida superficial» típica de Internet y, por último, creo que se debe simplificar el asunto a «van retrasados y dan excusas».[...]


Y es que la crítica fácil es demasiado... eso, fácil, como para dejarla escapar. Nos encanta desmerecer el trabajo ajeno sin tener ni zorra idea de lo que se ha trabajado en él. Así que, señores fanboys, aparte de las flechas, vayan preparando escudos. No pienso quedarme de brazos cruzados mientras intentan desmembrar el trabajo DESINTERESADO de un grupo de personas que, con cada versión, acercan el software libre al usuario de a pie por un lado, y simplifican la tarea de desarrollo por otro.


El que avisa no es traidor.
]]>
+
+ + + <![CDATA[Lo Que Nos Traerá Kubuntu Hardy]]> + + 2007-11-30T12:24:00+01:00 + http://devopsysadmin.github.io/blog/2007/11/30/lo-que-nos-traera-kubuntu-hardy + blueprints para Hardy, que viene a ser la lista de cosas que les gustaría tener implementadas para esta nueva versión de Kubuntu. Como usuario de KDE que soy, voy a centrarme en lo que nos quieren traer y que afecte a nuestro K-Escritorio.

  • Autenticación con Dominios Windows. Esto tal vez no sea útil para los usuarios convencionales (aka Home/Desktop-users), pero sí para entornos de trabajo. Imaginaos la de programas que hay que utilizan autenticación LDAP o de Active Directory. Imaginaos ahora que un usuario de ubuntu tuviera que andar "enguarrándose" con usuario y contraseña POR APLICACIÓN. Y peor aún, imaginaos a un usuario cuyo administrador de sistemas (que es su labor) cambia las contraseñas cada X tiempo. ¿Entendéis lo útil que puede llegar a ser?

  • Continúa la integración con KDE 4. Aunque hardy no lo traerá por defecto (pensad que es una LTS y quieren estar muy MUY seguros de que todo va a ir como la seda), se van integrando elementos del futuro KDE 4 en Kubuntu. Se usará la estructura de empaquetación de Debian, pero sustituyendo todo aquello que indique kde por kde4, para que coexistan ambos escritorios de manera temporal. Así, en vez de kdebase, por ejemplo, el paquete se llamaría kde4base, se instalará en /usr/lib/kde4, etc.

  • Hacer lo mismo que hace Ubuntu. Puede parecer una chorrada, y bastante mal me parece que tengan que planteárselo como propósito en vez de ser algo inherente, pero aquí está. Quieren que Kubuntu tenga las mismas funcionalidades de Ubuntu. ¿Ninguno se ha tomado Kubuntu Gutsy como un Ubuntu Feisty con paquetes actualizados? Se debe a la preferencia (y cantidad de gente) que se da al escritorio con Gnome. Parece que se van a poner las pilas y ofrecer módulos de configuración de compiz en ksystemsettings (el pseudo-sustituto de kcontrol), instalación automática de impresoras (como ya hace Ubuntu Gutsy), instalación automática de códecs en kaffeine, etc. Para mantener coherencia con KDE 4, usarán PyQT4.


El resto de características en blueprints (44 a fecha de hoy) tienen una influencia mayor en Gnome o en el futuro GoBuntu, Ubuntu optimizado para su virtualización.]]>
+
+ +
diff --git a/bin/deploy b/bin/deploy deleted file mode 100755 index 878a7fb..0000000 --- a/bin/deploy +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -if [ `basename $PWD` = bin ]; then - cd .. -fi -DATE=`date` - -git add -A . -git commit -git push origin source - -rake generate -rsync -as --exclude=.git --delete-before source/ ../master/ - -cd ../master/ -git add -A . -git commit -m "$DATE" -git push origin master diff --git a/bin/help b/bin/help deleted file mode 100755 index c4d8647..0000000 --- a/bin/help +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -cat << . - -USAGE: - - create new post: rake new_post['post title'] - - launch instance to supervise changes: rake watch - - deploy contents: bin/deploy -. diff --git a/bin/update_octopress b/bin/update_octopress deleted file mode 100755 index 40c0acc..0000000 --- a/bin/update_octopress +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -if [ `basename $PWD` = bin ]; then - cd .. -fi - -git clone https://github.com/imathis/octopress.git octopress -rsync -aS --delete-before octopress/plugins/ plugins/ -rm -fR octopress/.git* octopress/_config.yml octopress/*.markdown -rsync -aS octopress/ $PWD/ -rm -fR octopress -bundle install diff --git a/blog.sublime-project b/blog.sublime-project deleted file mode 100644 index 9cbd597..0000000 --- a/blog.sublime-project +++ /dev/null @@ -1,9 +0,0 @@ -{ - "folders": - [ - { - "follow_symlinks": true, - "path": "." - } - ] -} diff --git a/blog/2005/01/03/emisoras-de-radio-en-amarok/index.html b/blog/2005/01/03/emisoras-de-radio-en-amarok/index.html new file mode 100644 index 0000000..9361d9e --- /dev/null +++ b/blog/2005/01/03/emisoras-de-radio-en-amarok/index.html @@ -0,0 +1,431 @@ + + + + + + + + Emisoras De Radio en amaroK - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 3 + 05 + 12:05 +
+ + Emisoras De Radio en amaroK +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Hace ya un tiempo hice una entrada en el diario de KDE Hispano indicando cómo agregar enlaces asx a amarok. Para no repetirme y tenerlo más organizado, apuntaré aquí los enlaces a las distintas cadenas.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/01/14/kubuntu-es-mas-cerca-de-su-presentacion/index.html b/blog/2005/01/14/kubuntu-es-mas-cerca-de-su-presentacion/index.html new file mode 100644 index 0000000..92a2e9b --- /dev/null +++ b/blog/2005/01/14/kubuntu-es-mas-cerca-de-su-presentacion/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kubuntu-es, Más Cerca De Su Presentación - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 14 + 05 + 12:05 +
+ + Kubuntu-es, Más Cerca De Su Presentación +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Ayer por la tarde, Rouzic y yo nos pusimos de acuerdo en lo que iba a ser el estilo final de Kubuntu-es. Y es que no hay nada mejor que tener un objetivo común y ganas de cooperar en grupo. Ahora mismo no puedo adjuntar una captura de pantalla del sitio web, pero puedo decir que utilizará los estilizados azules de Kubuntu y el orden y facilidad de navegación de kubuntu.de. Esperemos que tarde poco en adecuar el sistema, mayormente porque ya tengo unos cuantos how-to's listos para colgar :) Voy a proponer que la página se cuelgue justo el mismo día que la aparición de Dapper (estable), para darle así un poco de bombo a la cosa y que parezca que ha sido algo venido del sitio oficial. ACTUALIZACION 20/01/06 - Rouzic se me ha adelantado y ya ha colgado la página. La teneis lista en http://kubuntu-es.org.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/05/16/kubuntu-es-reabierta/index.html b/blog/2005/05/16/kubuntu-es-reabierta/index.html new file mode 100644 index 0000000..fc1df5a --- /dev/null +++ b/blog/2005/05/16/kubuntu-es-reabierta/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kubuntu-es Reabierta - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ May 16 + 05 + 13:06 +
+ + Kubuntu-es Reabierta +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
También antes de la salida de dapper, como ocurriera en su versión anterior, ha sido re-reabierta kubuntu-es. Bueno, como re-reabrir queda un poco mal, diremos que ha salido la versión 2.0. El parecido con la original ha sido la prima de esta versión, manejando sus juegos de colores y agregando el icono de la ruedecita de kubuntu.de para los menús. Parece que algún admin no ha querido recordar esa prima (o no ha sabido que existía tal) a la hora de implementar las opciones disponibles, ya que, una tarde, felizmente yo viajando por la página, me encuentro opciones arriba, a la izquierda y a la derecha. El cabreo que pillé fue de impresión. ¿Tanta leche con que tiene que ser fiel a la original, para que me pongan un p*to menú a la derecha? Afortunadamente en poco tiempo apareció Rouzic por MSN. Hablé con él y, tras indicarme que no había puesto él tales opciones, y menos a ese lado de la página, las recoloqué todas a mano izquierda. Hombre, es que uno se dedica a modificar temitas del drupal para que luego te venga otro, y crea que faltan cosas y las ponga a su gusto... Esto suele ocurrir cuando no se tiene concretado el trabajo en equipo. Tener un esquema y seguirlo es más efectivo, ya que uno no entra y le chafa el trabajo al otro. En fin, la página ha tenido su éxito nada más resurgir, y espero que dapper mejore su soporte para AMD64 en su versión estable, porque ahora mismo deja mucho que desear.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/06/14/informatico-ezoque/index.html b/blog/2005/06/14/informatico-ezoque/index.html new file mode 100644 index 0000000..decfd8b --- /dev/null +++ b/blog/2005/06/14/informatico-ezoque/index.html @@ -0,0 +1,433 @@ + + + + + + + + ¿Informático? ¿ezoqué? - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jun 14 + 05 + 13:06 +
+ + ¿Informático? ¿ezoqué? +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¿Por qué he puesto semejante título? Muy sencillo: los estudiantes/currantes de informática (ojo, gente con conocimiento, no pardillos que se echan las flores al hombro por configurar el emule y hacer que funcione el crack para el Fifa 2006) estamos infravalorados por las empresas.

Recogiendo un enlace de meneame: Cuando hay un problema informático las empresas acuden a los... amigos Aún cuando la avería es grave, los gestores de las pymes se resisten a tener un equipo de mantenimiento y llaman a conocidos o a tiendas de informática. En la mayoría de las pymes se desconfía de las empresas de mantenimiento informático, de ahí que, según datos del estudio Actualizer, decidan recurrir a un amigo o a la tienda en la que compraron los ordenadores para arreglar una incidencia técnica. A pesar de que el 85% de las pymes tiene acceso a Internet, no se lanzan a contratar un plan de asistencia informática por malas experiencias previas. Los principales problemas son: virus, desconfiguración de las impresoras y lentitud del ordenador. Los amigos informáticos están hartos de que sus conocidos les reclamen para arreglar sus problemas y a veces ponen excusas para no ir en su ayuda. "No escuchan y no dan ni las gracías".

Efectivamente. Ni escuchan los consejos, ni dan las gracias. Rouzic en su día mencionó una frase que viene al dedo: "¿Para aprender a manejar un coche no vas a la autoescuela? Entonces, ¿por qué esperas que para manejar un ordenador te salga todo solo o, en su defecto, tengas a mano el teléfono del 'amigo informático' ?". Muchos de nosotros echamos una mano a los amigos precisamente por eso, porque son amigos. No se nos está haciendo un favor arreglando gratuitamente una máquina a la que no se ha tenido cuidado. Y tampoco se nos agradece, todo lo más una sonrisita que casi nos hace pensar en el dinero que se ha ahorrado nuestro supuesto amigo. Haced el favor, cuando compreis un ordenador no espereis que sea "enchufar y listo". Si os lo venden así, MIENTEN. Un PC no es una lavadora, no es una nevera, no es una TV. No es una máquina dedicada a una tarea, requiere unos cuidados más allá de la limpieza de polvo y mantenimiento de las piezas. Requiere que cuidemos el software y los datos que en él instalemos. Hagamos un símil: eres el jefe de una pequeña empresa y contratas a alguien polivalente, esto es, ha sido informático, electrónico, contable, intérprete y traductor de alemán, inglés y francés, y encima abogado. Toda una joya, ¿no? Vale, ¿y qué pasaría si lo tuvieras intentando sacarle rendimiento 24 horas al día, 7 días a la semana, con un salario miserable (por no decir "de becario") y con un trato que roza la ilegitimidad de los derechos humanos? Efectivamente, que esa joya de persona se harta y deja de trabajar como es debido. Obviamente, no podemos comparar a día de hoy un PC con una persona, pero sí la actitud de este jefe de empresa. Un PC es una máquina compleja, de cuidado complejo, y cuyos cuidadores (informáticos o pre-informáticos) son infravalorados debido a que está "el amiguito que consigue gratis el ófis" que, naturalmente, cobra mucho menos aún a sabiendas de que ha sobrepasado la línea de la ilegalidad. Señoras y señores, admitámoslo: valoramos el precio por encima de la calidad. No sabemos lo que hay dentro de nuestros equipos, y no nos importa mientras "el amigo que sabe de informática" nos resuelva los problemas rápidamente y sin tener que pagar a alguien cualificado. Curiosamente, luego nos piden doscientas mil certificaciones, quince años de experiencia en cada sector, ser menor de 25 años y carnet de saber conducir hasta jamelgos con esquizofrenia paranoide. ¿Para qué tanto título, si luego sólo soy "el amigo que sabe de informática"? Por cierto, que parece ser que he sido imbuído por el espíritu del pringao-howto, ya que algunas líneas han sido quasi-copiadas de él, imagino que porque no ha parado de ocurrirme en esta vida.

Remito el original para quien tenga ganas de echarse unas risas (sarcásticas, naturalmente).
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/06/23/diversificacion-y-estandares/index.html b/blog/2005/06/23/diversificacion-y-estandares/index.html new file mode 100644 index 0000000..5028772 --- /dev/null +++ b/blog/2005/06/23/diversificacion-y-estandares/index.html @@ -0,0 +1,433 @@ + + + + + + + + Diversificación Y Estándares - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jun 23 + 05 + 13:07 +
+ + Diversificación Y Estándares +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Como usuario de linux que soy, y venido anteriormente de un mundo Windows, me encuentro con una serie de incomodidades que, aunque fáciles de resolver (para mí), creo que deberían dejar de existir. Y no me refiero al tema de las licencias (como los mp3, por ejemplo), que también lo podría mencionar, sino al exceso de diversificación de las distribuciones linux. Tenemos Red Hat (empresa/servidor) y su pequeña Fedora (workstation/casa), Mandriva, Novell-SuSE, Debian/Ubuntu/Knoppix ... ¡Buf! ¿Y qué hace el usuario? ¿Cómo se le puede convencer a un usuario acerca de la distribución más adecuada a sus necesidades? ¿Y cómo se le convence de desinstalar todo y volver a instalar cuando estas necesidades han cambiado? Para este tipo de situaciones se generan acuerdos, consensos y, en consecuencia, estándares. Uno de ellos es la LSB (Linux Standard Base).

Pero no es suficiente: la paquetería es distinta, y, cuando no lo es, se recomienda no mezclar paquetes de distintos orígenes (caso por ejemplo de Red Hat/Mandriva/SuSE o Debian/Ubuntu). En el caso de Windows es fácil: está preparado para Windows, sí o sí. Que lo esté para sus distintas versiones es aparte, pero al menos las versiones de Windows tienen un periodo de vida que permite la readaptación paulatina.

Pero, ¿qué pasa cuando un informático recomienda Mandriva "para empezar" y luego Red Hat/Fedora "para cosas más serias"? Que el usuario vuelve a encontrarse con el infierno de las dependencias, del cambio de nombre entre paquetes, de las versiones de núcleo y no-núcleo, etc. Bien, volviendo al tema de los estándares: tenemos trabajo. Mucho trabajo. Uno no puede estar pensando en qué distribución es la mejor o la más adecuada (la gente suele mirar más lo primero que lo segundo), sino que funcione el ordenador para lo que lo compró, y algo más. Salen nuevas versiones y distribuciones de Linux cada poco, cada TAN poco que resulta confuso.

Para muestra, un botón: le conté a mi churri que iba a sustituir Fedora por Kubuntu en mi ordenador, y me dijo "ah, pero ¿no te lo habías instalado hace poco?" Efectivamente, no tenía ni dos semanas instalada Fedora, y, aunque me gustara mucho su acabado, echaba de menos el sistema APT de Debian. Tuve que explicarle que Linux es sólo el núcleo, y que luego está la serie de programas que funcionan bajo ese núcleo, que debido al enfoque de cada empresa para el sector al que quisiera destinar el producto, se realizan recopilaciones o "distros" que cumplen (o intentan) los objetivos de dicho enfoque.

"¿Y no puede haber un Linux Home, un Pro y un Server?" Una pregunta tan sencilla que tapa la boca. Naturalmente que hay distros que cumplen ese cometido, pero se reparten tanto-tantísimo el mercado actual, que la confusión crece por el temor de no haber elegido la correcta.

Rezo por el día en que se dejen de hacer tantas distros como formas de pensar, que se aúnen esfuerzos y que luego sí, se hagan las personalizaciones/enfoques que se quieran, gracias al uso de software libre. Pero por el amor de Dios, unamos esfuerzos y ahorremos energías, que si queremos un escritorio de calidad que compita con los comerciales, lo que estamos haciendo es el primo.

Ea, uníos a Kubuntu :P
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/07/25/el-five-de-lo-que-linux-deberia-aprender/index.html b/blog/2005/07/25/el-five-de-lo-que-linux-deberia-aprender/index.html new file mode 100644 index 0000000..0f75f97 --- /dev/null +++ b/blog/2005/07/25/el-five-de-lo-que-linux-deberia-aprender/index.html @@ -0,0 +1,433 @@ + + + + + + + + El "Top Five" De Lo Que Linux Debería Aprender - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jul 25 + 05 + 13:09 +
+ + El "Top Five" De Lo Que Linux Debería Aprender +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Este artículo es una traducción libre del orginal en Linux Watch:

---

Linux tiene un montón de cosas buenas -- open-source, seguridad, fiabilidad -- pero está bien lejos de la perfección. De hecho, Linux y sus vendedores podrían mirar en aprender algunas cosas de Microsoft. Sí, Microsoft. ¿Como qué? Aquí está mi "top five" de cosas que Linux pudiera aprender de Microsoft.

1. MSDN Difundid la palabra: "digg" (menead) esta historia. Con Linux y el software open-source, todo el código es abierto, con lo que cualquier desarrollador puede dar el salto y empezar a trabajar. Esto es genial, pero ¿y si no sabes por dónde empezar? ¿Y si no estás del todo seguro, o no demasiado seguro, acerca de cuál es el método correcto para programar un proyecto dado? ¿Y si quieres escribir (desarrollar) algo nuevo y útil... pero descubres tras tres meses de proyecto que estás duplicando un trabajo que se ha realizado una docena de veces? No hay guías fáciles de uso de programación adecuada en open-source. Para aprender cómo hacerlo correctamente, por norma lleva un par de años averiguar las leyes del software libre. Con Microsoft, sin embargo, está el Microsoft Developer Network (MSDN). MSDN provee a los desarrolladores ayuda a escribir aplicaciones usando los productos y herramientas de programación de Microsoft. Y cuando digo ayuda, quiero decir AYUDA. Hay tutoriales bien escritos, mejores guías prácticas, las últimas betas y copias de producción de sistemas operativos y software, herramientas de desarrollo de software, ejemplos de código, comunidades on-line, artículos sin fin de los entresijos de la programación de Microsoft, y así sucesivamente. Lo mejor de todo es que está bien organizado, así que puedes aprender fácilmente lo que necesites cuando necesites aprenderlo. MSDN no es barato, pero para los desarrolladores de Microsoft vale cada céntimo que se paga. Los sitios open-source como SourceForge son muy cómodos, pero son más útiles como incubadores de proyectos que como sitios de aprendizaje. No, el open source y Linux no tienen nada que encaje con MSDN.


2. Interfaz común Cada uno tiene su propia idea de cómo construir una interfaz. Pero lo que los usuarios quieren es una interfaz común. Quieren aprender un método para hacer todas sus tareas comunes. Cuanto más les pides aprender cosas distintas para hacer lo mismo, más se enfadan. En su mayor parte, Microsoft se ha estancado en hacer evolucionar sus interficies. Si conociste Office 97, puedes moverte fácilmente con Office 2003. Y una vez que te haces con Windows 98SE, no te llevará demasiado hacerte con el XP SP2. En Linux, puede ser un salto mucho mayor de una aplicación a otra, o de KDE a Gnome a Enlightenment. Aún así, Microsoft está empezando a golpear. La interfaz de Office 12 es bastante nueva, y muchos usuarios lo ven como una molestia mayor. Paralelamente, Linux va haciendo de las suyas con el Proyecto Portland, un trabajo de equipo de todos los escritorios grandes de linux, está desarrollando no sólo APIs comunes (API: Application Programming Interface, Interfaz de Programación de Aplicación), sino también interficies comunes de usuario. Entre este año y el siguiente, Linux, y no Microsoft, tendrán la ventaja en este tema.


3. Formatos Comunes Los formatos de Microsoft Office son propietarios, pero por la presión de la demanda de mercado, se han convertido en formatos universales. Como las interficies, los formatos se han ido cambiando, pero es normalmente posible importar satisfactoriamente los formatos antiguos a los nuevos programas sin pérdida de datos. El formato ODF (Open Document Format) ofrece un cambio algo mejor. Es un formato que cualquiera puede usar y leer. El problema es que, incluso ahora, no tiene soporte suficiente. Estoy esperando el día en que Linux y todas las aplicaciones open-source puedan leer y escribir ODF. Hasta que llegue ese día, la ventaja de este formato se morirá con Linux y algunos programas open-source.


4. Marketing Una razón de peso por la que Microsoft está en la cumbre es porque pagan continuamente cientos de millones cada año de marketing y propaganda. Echad un vistazo a casi cada revista de tecnología, y vereis un cartel de Microsoft. Periódicos de la ciudad, también. Televisión, igualmente. Se puede argumentar que parte de ese dinero ha sido malgastado. Quiero decir, ¿y qué hay de esos dinosaurios de oficina? Pero, de una manera u otra, Microsoft está siempre al lado de sus clientes. No te molestes en soltar el tema de marketing por saturación. Es el motivo por el que la gente bebe Coca-Cola, compra Toyotas, aún fuma cigarrillos y sí, usa Windows. ¿Y qué hacen las compañías de Linux en el tema de los anuncios? Casi nada. Tontos. Por cada diez, incluso por cada cien anuncios de Microsoft, veo uno de Linux. ¿Por qué crees que los sitios de Linux, como éste (Linux Today), y muchos otros tienen anuncios de Microsoft? Porque Microsoft compra el espacio para el anuncio, y las compañías de Linux casi nunca lo hacen. Así de simple. Desde hace mucho, las distribuciones de Linux han vivido de los sitios de noticias Linux, sí, como éste (Linux Today), que informan de cada pequeño movimiento de Linux. Adivinad qué, chicos. Eso está bien para construir un nicho. Felicidades, funcionó. También funcionó para Amiga y OS/2, apesta para un mercado masivo y creciente. También está empezando a no funcionar. Oh, la gente lee nuestra familia de publicaciones de Linux cada mes. Estoy seguro que es cierto también para los otros espacios de Linux. Recuerdo, sin embargo, cuando la nueva generación de espacios de noticias online, como Slashdot, también hacían que Linux acapararan las portadas, y al resto las ponían como las noticias de menor importancia. Ahora, muchas grandes historias del mundo Linux ni siquiera están, ni en Slashdot ni en Digg. ¿Por qué? Porque mientras el total de usuarios de Linux está creciendo, ya no es un crecimiento brutal. Linux ya no más el más nuevo y excitante de los chicos del barrio. Los vendedores de Linux ya no cuentan más con que se lea la noticia de una nueva distribución o servicio salvo por gente que ya se ha pasado a Linux. ¿Quieres clientes nuevos? ¿Quieres clientes de Microsoft? Basta de excitaciones por poner -- oh, vaya -- una paginita o anuncio pequeño en el New York Times. Comienza a gastar cuartos en exponer el mensaje de Linux, tu mensaje, delante de los clientes, todos los días.


5. Soporte OEM Si quiero usar un escritorio Windows, simplemente compro un ordenador. Ni más ni menos. Microsoft ha tenido los OEM (Original Equipment Manufacturers) en su bolsillo por casi una década. Y ya basta. Los vendedores de Linux deben poner su granito de arena para hacer que Linux venga pre-instalado. Sí, es muy fácil instalar Xandros en un PC, pero enfrentémonos a los hechos: la mayor parte de los usuarios nunca instalarán un sistema operativo en su vida. Los usuarios usan lo que tienen delante, y no hay más. Para que el escritorio Linux siga adelante, cuando un usuario enciende el ordenador, tiene que ver arrancar Linux. Así de simple. Continúo pensando que el soporte para el escritorio Linux tiene que ser un añadido para cualquier OEM. Una vez que HP y Dell vean que hay dinero en el escritorio Linux, lo pondrán en sus equipos, y entonces (y sólo entonces), podemos hablar seriamente del llamado "año del escritorio Linux". Un problema relacionado es la eterna molestia de los controladores. Cualquier pedazo de basura de hardware tiene un controlador de Windows. Incluso hoy en día, muchos periféricos no tienen soporte en Linux. Sí, ya sé que mirando un poco y toqueteando el sistema puedes conseguir que la mayor parte del equipo funcione. ¿Cuántas personas quieren meterse en resolver este problema? No demasiada. Cuando alguien comienza a usar Linux la primera vez, y una tarjeta de sonido integrada o una tarjeta WiFi o lo que sea no funciona, ¿piensan quizá que "tío, ojalá esta gentuza diera soporte a Linux", o piensan que "vaya, Linux tiene que estar estropeado, mi trasto multimedia no funciona, y de siempre ha funcionado con Windows"? Te diré lo que piensan: piensan que Linux está estropeado. Linux nunca tendrá el soporte universal de hardware que Windows tiene, pero sus desarrolladores tienen que intentar con todas sus fuerzas e influencias acercar sus drivers al open-source lo más posible. Afortunadamente, algunos de los OEM de PC, como Dell, presionan a sus proveedores para que proporcionen controladores de Linux para sus equipos. Con más de este tipo de soporte, podremos ver a Linux acercarse finalmente a Microsoft.


Conclusión Si Linux, sus distribuidores, empresas y proveedores pueden aprender estas lecciones de parte de Microsoft, el pequeño sistema operativo del pingüino será mucho mejor de lo que es hoy en día. Sólo porque muchos fans de Linux odien Microsoft no significa que no podamos aprender algo del Impero del Mal. Podemos, y deberíamos.


---


El tema del soporte para nuevos desarrollos no lo veo tan mal como lo pinta el artículo. Es cierto que un desarrollador no tiene más remedio que ponerse a pensar en qué herramienta tiene que usar para empezar un trabajo (que si GTK2, que si QT o KDE, que si wxWindows, que si python+GTK o python+KDE...), y de los tantísimos que hay, la respuesta de los profesionales es "el que te resulte más cómodo". Pero también es cierto que en Windows había formas y formas de hacer las cosas. Si usabas Visual Basic o Visual C++, podías disponer de la API directa de Windows. Si usabas Delphi, la API te la daba aparte el programa (curiosamente, como mejor funcionaba era así).


Yo echo mucho, muchísimo de menos, una RAD (Rapid Appliation Development, Desarrollo Rápido de Aplicación) a la que vaya metiendo componentes de terceros o propios y me permitan tener una aplicación hecha en un momento y perfectamente integrada en mi entorno (KDE, para los que lo quieran saber).


En lo que a los formatos comunes se refiere, el autor debería recordar que ya hay incluso un plug-in para la lectura de ODF hasta en Office 2003. Es decir, Microsoft LE TEME al ODF. No es para menos. No se trata de cuota de mercado, se trata de estandarización: un formato libre es mucho más fácil de difundir que no uno propietario, cuyo "padre" tiene que ser una killer application para que todo el mundo se disponga a usarlo. ¿Cuánto ha tardado el .doc de Microsoft Office en convertirse en estándar, en base a lo que está tardando el tipo ODF?


Campañas de publicidad: en España dudo que las veamos si llegaran a existir. Alguna que otra vez nos viene por TV el anuncio de PC City o de Mediamarkt, pero deja de contar. El Estado español hace tiempo que se vendió al mercado yanki, nos guste o no. Afortunadamente, las comunidades autónomas tienen libertad para elegir el soporte en que se procesen los datos siempre que se provea de la información necesaria para replicar dicha información en el resto de competencias. Adivinad qué: resulta que Linux es libre. Resulta que se puede replicar. Resulta que se puede PERSONALIZAR. Gracias Linex, gracias Guadalinex, gracias Lliurex, y gracias a otras que ahora no me vienen a la cabeza pero sé que existís (aunque ya podríais basaros en KDE, ¡coña!).


Drivers... ¡ay, los drivers! ¿Qué puedo hacer yo, usuario de nVidia, para que la aceleración 3D me venga de fábrica? Pues pagar por el sistema. ¿Qué? Pues sí, nVidia tiene drivers descargables gratuitamente, pero no pueden ser distribuidos si no es pagando por ellos. Así que Linux tiene que ser de pago para ello. Lo mismo con los mp3, algunas webcams, algunas tarjetas WiFi... Hay que pagar por ello, porque ha sido licenciado así. ¿Yo me compraría un PC con Linux en cuya factura pusiera "S.O. Linux - 15EUR" ? Sí. Primero, porque ese precio para el Sistema Operativo es irrisorio. Segundo, porque sé que esos 15 EUR no son por el soporte en CD (que seguramente vendría), sino más bien porque la empresa ha pagado por incluir licencias de nVidia y ATI (y posiblemente otras) en sus controladores para el kernel, en licencias de reproducción de MPEG (mp3 mayormente) y WMA/WMV (aunque se distribuyan los w32codecs, hay que recordar que éstos tienen licencia y ¡efectivamente! es de pago). En fin, que si a mí un PC me cuesta 600 EUR sin S.O., no me importa pagar 615 por el S.O. si éste es Linux, viene preinstalado y con los drivers bien instaladitos y un sitio web de donde bajarme los que necesite en un futuro. En mi caso tal vez no fuera a hacerlo porque sé de dónde conseguirlos sin romper licencias, pero al olmo de un usuario novel no pienso pedirle peras.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/09/07/kubuntu-es-vuelta-la-vida-y-van/index.html b/blog/2005/09/07/kubuntu-es-vuelta-la-vida-y-van/index.html new file mode 100644 index 0000000..de236cb --- /dev/null +++ b/blog/2005/09/07/kubuntu-es-vuelta-la-vida-y-van/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kubuntu-es Vuelta a La Vida (Y Van...) - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Sep 7 + 05 + 13:12 +
+ + Kubuntu-es Vuelta a La Vida (Y Van...) +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Vale, kubuntu-es ya ha vuelto a la vida. Veremos cuánto dura esta vez. Tenemos el "factor Raúl", es decir, lo que el dueño del hosting tolere el consumo de ancho de banda de lo que se supone es un portal en español de una distribución de linux. Nota: tengo que recordar preguntarle a Rouzic qué pasó con el hosting de Canonical. A ver si ahora vamos a ser los Riddell españoles XD
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/09/13/acelerando-que-es-xgerundio/index.html b/blog/2005/09/13/acelerando-que-es-xgerundio/index.html new file mode 100644 index 0000000..4284a4e --- /dev/null +++ b/blog/2005/09/13/acelerando-que-es-xgerundio/index.html @@ -0,0 +1,433 @@ + + + + + + + + Acelerando Que Es Xgerundio - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Sep 13 + 05 + 13:12 +
+ + Acelerando Que Es Xgerundio +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
XGL ha supuesto una revolución en el modo de tratar los gráficos (animados o no) en el mundo Linux. A pesar de que en todo momento Novell dio la advertencia de ser una beta, todos queremos tener un servidor XGL en nuestra máquina... incluso en detrimento de lo que les pudiera pasar a aplicaciones no compatibles. Cedega, por ejemplo, es una de ellas. No es capaz de funcionar a pantalla completa, según muchos foros. No comentan nada de modo ventana, pero un "mata-mata" tipo "Half-Life" en modo ventana tiene que ser un poco incómodo. En otro blog (no pongo enlaces porque no os imaginais la cantidad de páginas que visito al día), éste en inglés, hablan de AIGLX, una implementación RedHat/Fedora para X.org, que hace más transitivo el paso a la aceleración 3D sin la pérdida de compatibilidad con los binarios actuales. Éste, por ejemplo, será el método que utilizará Edgy, en lugar del XGL que prometieron cuando hablaron de los planes de esta versión. Por mi parte, creo que es más correcto el uso de AIGLX. ¿Por qué? Porque los desarrolladores que no actualizan con frecuencia o que no ven útil que su programa tenga código basado en OpenGL porque utiliza 2D puro y duro pueden seguir utilizando el método clásico, mientras que los desarrolladores de algunos videojuegos, reproductores multimedia, etc, que sí pueden beneficiarse de OpenGL, pueden hacerlo tranquilamente sin temor a tener que reimplementar sus programas según si se basan en el servidor X.org, XGLX (el nombre "formal" del XGL de Novell) o lo siguiente que salga con vete a saber tú qué nombre. Otro factor del mal uso de XGLX es la dependencia TAN elevada de los controladores de la tarjeta gráfica: actualmente quien tiene una ATI lo pasa fatal para hacerlo funcionar (por culpa de ATI, ni más ni menos, cuyas actualizaciones de controladores pasan perfectamente del mes al año, en lo que a usuarios de Linux se refiere). Sin embargo, con los controladores propietarios de nVidia no hay problema ninguno. Glucose viene a ser el término medio. Es decir, una aplicación (basada en QT) que esté en 2D pero quiera ser dibujada por el motor OpenGL de la tarjeta gráfica (lo que conlleva el aligeramiento de peso en el microprocesador) puede hacerlo gracias a un GlucoseInit y la implementación adecuada. Resumiendo: lo ideal para una transición suave entre el actual modelo de X.org y las futuras y venideras implementaciones para un escritorio "acelerado" es actualmente (y mira tú lo bien que nos viene) el modelo que tanto Fedora como Ubuntu están realizando: X.org 7.1 + AIGLX + Glucose. Aunque para Glucose supongo que habrá que esperar a Edgy+1...
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/10/19/de-primeras-con-edgy/index.html b/blog/2005/10/19/de-primeras-con-edgy/index.html new file mode 100644 index 0000000..0e659bd --- /dev/null +++ b/blog/2005/10/19/de-primeras-con-edgy/index.html @@ -0,0 +1,433 @@ + + + + + + + + De Primeras Con Edgy - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 19 + 05 + 13:13 +
+ + De Primeras Con Edgy +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
El mezclote SATA-IDE en mi ordenador me está trayendo de cabeza: cuando tengo que hacer un reinicio (normal en un sistema linux/xp), me toca apagar el equipo, DESENCHUFARLO y esperar de 10 a 15 min a que libere los condensadores. ¿Por qué? Porque si no, el disco IDE no se enciende. Y puesto que dapper no permite inicio en discos SATA con GRUB, tenía que dejarlo ahí. Vale, pues el disco IDE, que tan por saco me ha dado, acaba de ser eliminado de mi torre. Tenía ya una partición hecha y pensada para NTFS y el futuro Windows Vista, así que le daré uso. Instalar el XP me trae recuerdos... ains... xD Instalar edgy con el CD alternate es más cómodo que antes. Aunque se creyera que mi teclado era francés, no hubo problema para corregirle del error. Particionado: ¡Primer fallo! No me deja formatear en XFS, pero sí en Reiser y ext3. Este último siempre me ha fallado por inconsistencia, y aunque tenga los datos en ese sistema de archivos (gracias a IFS for Windows puedo usar la partición), el sistema estará en Reiser (qué remedio). Instalación: pues como siempre, aunque podría decir que hasta ha sido más lenta que de costumbre. Ahora sería cosa de probar la instalación desde LiveCD, a ver qué tan rápido arranca (se supone que han mejorado la velocidad y tal). Arranque: bueno, me esperaba un arranque de grub bonito, pero no. Todo modo texto. Eso sí, rápido de cojones. En mucho menos que lo que dapper, ya tengo mi escritorio disponible para el uso cotidiano. Post-Instalación: en fin, qué voy a decir. Que no llueve a gusto de todos. Actualizar paquetes, instalar nvidia, controladores propietarios multimedia, kdeutils, kdemultimedia (me gusta usar la previsualización en konqueror). Vaporware: otra vez al chroot. Joer, y menos mal que decían que iban a jugar con esa característica. Pues ni simbiosis amd64/i386, ni pruebas con smart (administrador de paquetes y gestor de dependencias), ni xgl (beryl) instalado por defecto. Todo a golpe de apt-get, sí, pero incómodo. Fallos: coño! han arreglado el script de instalación de mldonkey-server... para que luego el Kmldonkey no conecte! xD En serio, creo que hay un problema de conexión o permisos con los puertos, porque el aMule no funciona tampoco en modo local (amule-utils) para pasarle los parámetros por consola. Por lo demás, pues bien. No va más rápido, pero tampoco va más lento. He actualizado paquetes y listos. Vamos, que si dapper me dejara instalar GRUB en mi disco SATA, podría haberme esperado perfectamente a la versión estable de edgy, o incluso a edgy+1 si ésta mejorara lo actual. Recomendación final: actualízate a edgy cuando sea estable... y le apliquen un parche xD
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/10/22/edgy-rc1/index.html b/blog/2005/10/22/edgy-rc1/index.html new file mode 100644 index 0000000..b4e01b0 --- /dev/null +++ b/blog/2005/10/22/edgy-rc1/index.html @@ -0,0 +1,433 @@ + + + + + + + + Edgy RC1 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 22 + 05 + 13:13 +
+ + Edgy RC1 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Bueeeeno, afortunadamente han arreglado cositas. Ya vuelvo a tener mldonkey (bieeeeen), y ya funciona el arranque gráfico (más "bieeeeen"). Parece estable. Por lo menos tengo los paquetes actualizados (su dolor de cabeza costó) y ya no me tengo que preocupar hasta pasados 6 meses. Aunque bueno, ahora que el SATA es el único disco duro, me espero fijo-fijo a que Feisty Fawn sea estable. Espero... xD
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/11/27/kubuntu-es-en-obras/index.html b/blog/2005/11/27/kubuntu-es-en-obras/index.html new file mode 100644 index 0000000..3fe8e3b --- /dev/null +++ b/blog/2005/11/27/kubuntu-es-en-obras/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kubuntu-es en Obras - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 27 + 05 + 12:13 +
+ + Kubuntu-es en Obras +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Poco nos dura la estabilidad en Kubuntu-ES. Primero hemos pasado el host de albianlinux a Canonical, y ya he tenido problemas: como el de AL era MySQL 4.0, no había manera de guardar la codificación de las filas ni las tablas, con el consecuente fallo de acentos. Afortunadamente, he podido retocar el archivo de texto y volver a mandarlo vía PHPmyadmin para que todo esté como tiene que estar. Y ahora, a falta de no tener aún el dominio kubuntu-es.org asociado correctamente, tenemos el cierre de la página. Espero que rouzic no tarde demasiado, mayormente por los que vienen detrás. No entiendo muy bien por qué la política/manía que tiene de separar las secciones en distintos drupal, yo lo veo más problema que ayuda a la hora de gestionar la base de datos, pero ya se verá. En fin, supongo que pienso esto porque la página es ya como mi niña pequeña y quiero lo mejor para ella.
+ + +
+

+ + + + + + + + + + + + + + +

+ + +
+ +

+ + « Edgy RC1 + + + Una semana » + +

+
+
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/11/29/una-semana/index.html b/blog/2005/11/29/una-semana/index.html new file mode 100644 index 0000000..76866c6 --- /dev/null +++ b/blog/2005/11/29/una-semana/index.html @@ -0,0 +1,433 @@ + + + + + + + + Una Semana - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 29 + 05 + 12:14 +
+ + Una Semana +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Es el período de transición que ha puesto rouzic para que kubuntu-es vuelva a estar en marcha. Tiene realizadas dos de las secciones, y sigue limpiando morralla de los foros. Y es que hay mucha gente que se sigue pasando por el forro de los cojones (sí, aquí me puedo y me pienso permitir el uso de palabras malsonantes) leerse las normas del foro, leerse las secciones disponibles, leerse un libro cada X tiempo para recordar normas tan simples como "a ver"="veamos", "haber"="verbo equivalente a existir". Así que ánimo, que son pocos y cobardes. Los que estamos a la espera del Gran Resurgimiento tenemos el aspell (corrector ortográfico) en mano y el turbante de talibán otrográfico listos para la santa cruzada XD . ¡Ah! Muchísimas gracias a todos los que estáis mandando comentarios a mi blog, aún sin tener necesidad, tanto si es de felicitación como si es de ponerme a caldo. Antes de que alguno lo piense, respondo: no, el blog no surgió después de kubuntu-es y no, no comenté con nadie que yo fuera a informar acerca del estado de la web y que por ello se enlazara a mi blog. De hecho, se enlazó sin mi conocimiento y se me ha puesto como tarea. No me molesta hacerlo, naturalmente (si me molestara, dejaría incluso de ser admin de kubuntu-es), pero que nadie crea que ésta es una manera de promocionarme. Es más, me gustaría que la afluencia de gente que ve este blog subiera sólo porque le gusta leerme cada vez que escribo alguna cosa mía, no porque sea la única manera de saber qué se cuece tras las bambalinas de kubuntu-es (lo que me recuerda que tengo que preguntarle a patrick cada cuánto se actualiza el planet).
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2005/12/01/la-de-microsoft/index.html b/blog/2005/12/01/la-de-microsoft/index.html new file mode 100644 index 0000000..909be80 --- /dev/null +++ b/blog/2005/12/01/la-de-microsoft/index.html @@ -0,0 +1,433 @@ + + + + + + + + La "Innovación" De Microsoft - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Dec 1 + 05 + 12:14 +
+ + La "Innovación" De Microsoft +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
A través de un enlace de menéame, veo un resumen de algunas de las "innovaciones" que Microsoft se suele pegar como propias. El artículo es algo extenso, así que voy a traducir únicamente el resúmen de cada párrafo:

  • DOS : Comprado a Seattle Computers en 1980

  • Compilador C: licencia de Lattic en 198?

  • Flight Simulator: licencia de BAO en 1982 y luego adquirido junto con BAO en 1995

  • Windows: GUI licenciada por Apple en 1985

  • Powerpoint: Adquirido con la compra de Forethought en 1987

  • Windows NT: basado en propiedad intelectual robada de Digital en 1988

  • Sistema de Archivos Comunes en Internet: Copia del protocolo SMB de IBM

  • Pila TCP/IP: licenciado por Spider Software en 19??

  • MS-RPC: copia del DCE-RPC de Apollo por uno de sus fundadores en 198?

  • Visual Basic: comprado como Ruby de Alan Cooper en 1988

  • SQL Server: licencia de Ashton-Tate en 1989

  • TrueType: licencia de Apple en 1991

  • Internet Explorer: licencia de Spyglass en 1994

  • DirectX: adquirido con la compra de Rendermorphics en 1995

  • Frontpage: comprado de Vermeer en 1996

  • Librerías C++ estándar: licencia de Dinkumware en 1996

  • Tecnología óptica de tracking de Intellimouse Explorer: licencia de Agilent en 1998


Microsoft ha hecho mucho por y para los usuarios de ordenadores... Sí, claro, lo mismo que Sauron en la Tierra Media con el Anillo Único, no te jode...
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2006/01/16/instalador-de-ubuntu-para-windows/index.html b/blog/2006/01/16/instalador-de-ubuntu-para-windows/index.html new file mode 100644 index 0000000..c6b8edb --- /dev/null +++ b/blog/2006/01/16/instalador-de-ubuntu-para-windows/index.html @@ -0,0 +1,433 @@ + + + + + + + + Instalador De Ubuntu Para Windows - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 16 + 06 + 12:15 +
+ + Instalador De Ubuntu Para Windows +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¿Tienes un equipo con Windows instalado? ¿Quieres
instalar linux, pero te parece demasiado complicado?
Pues no hay problema. Los chicos de Ubuntu ya se han puesto manos a la
obra, y tienen en marcha el proyecto "install.exe", que es, ni más ni
menos, un instalador de X/K/Ubuntu para Windows.
El programa se encuentra en una fase muy verde, pero ya contiene unas
cuantas capturas de pantalla, gracias a las cuales podemos apreciar que
la instalación será muy, pero que muy sencilla, y que además mantendrá
intactos los datos de nuestra partición windows.
https://wiki.kubuntu.org/install.exe/PrototypeExisten
dos maneras para instalarlo: mediante el instalador (el cual nos
recordará un poco a la manera que tiene Internet Explorer en
instalarlse) que ocupa unos 1.5MB y que va descargando los archivos
necesarios, o un archivo único con todo lo necesario para su
instalación desde Windows, descargable mediante .torrent .
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2006/03/07/28-pautas-para-reforzar-tu-servidor/index.html b/blog/2006/03/07/28-pautas-para-reforzar-tu-servidor/index.html new file mode 100644 index 0000000..5c03a6e --- /dev/null +++ b/blog/2006/03/07/28-pautas-para-reforzar-tu-servidor/index.html @@ -0,0 +1,433 @@ + + + + + + + + 28 Pautas Para Reforzar Tu Servidor Linux - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Mar 7 + 06 + 12:21 +
+ + 28 Pautas Para Reforzar Tu Servidor Linux +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Traducción libre de http://kevin.hatfieldfamilysite.com/?p=147:

1. En tu cortafuegos (tienes uno, ¿verdad?) confirma que el puerto MySQL para entrantes es el 3306 y ciérralo. Si este puerto se queda abierto se expone tanto a un abuso de servicio y una amenaza de seguridad ya que no sólo los hackers pueden irrumpir en MySQL, sino que cualquier usuario puede almacenar su base SQL en tu servidor y acceder desde cualquier equipo, y así (ab)usar los recursos de tu servidor.

2. Chequea los permisos de /tmp. Deberían estar en chmod 1777

3. Chequea el propietario de /tmp. Debería pertenecer a root:root

4. Chequea /etc/cron.daily/logrotate. Debido a un bug en logrotate, si se monta /tmp con la opción noexec, necesitas que logrotate use un directorio temporal diferente. Si no lo haces, este syslog puede no reiniciarse correctamente y escribirá sobre archivos antiguos/incorrectos.

5. Chequea los permisos de /var/tmp. Debería estar en chmod 1777

6. Chequea el propietario de /var/tmp. Debería pertenecer a root:root

7. Chequea que /var/tmp está montado como sistema de archivos. No debería estar enlazado (ln -s) a /tmp o montado como un sistema de archivos.

8. Chequea que /var/tmp está montado con noexec,nosuid. Normalmente no tiene estas opciones, con lo que deberías considerar agregar un punto de montaje en /etc/fstab con esas opciones.

9. Chequea los permisos de /usr/tmp. Deberia estar en chmod 1777

10. Chequea el propietario de /usr/tmp. Deberia pertenecer a root:root

11. Chequea que /usr/tmp está montado como sistema de archivos o es un enlace simbólico (ln -s) de /tmp.

12. Chequea /etc/resolv.conf . No deberías especificar como nombre de servidor (nameserver) a 127.0.0.1 o a localhost. Usa la IP principal de los servidores en su lugar. Chequea 12b. Chequea /etc/named.conf por las restricciones de recursividad . Si tienes un servidor DNS local ejecutándose pero no tienes restricciones de recursividad establecidas, es un riesgo de seguridad y de rendimiento tan buenos como ataques DDoS contra tu sistema, con lo que deberías establecerlo sólo para las direcciones IP locales.

13. Chequea el runlevel del servidor. Para un entorno seguro deberías ejecutar el servidor sólo a nivel 3. Puedes solucinarlo editando /etc/inittab y cambiando la linea de "initdefault" a como sigue: id:3:initdefault y luego reiniciar el servidor.

14. Chequea el cron del usuario "nobody". Tienes un registro de nobody que deberías chequear si no ha sido creado por un exploit.

15. Chequea el soporte del Sistema Operativo. Asegírante que tu versión aún tiene soporte del fabricante y que las actualizaciones aún siguen disponibles.

16. Chequea si SSHv1 está desactivado. Deberías, editando /etc/ssh/sshd:config y configurando: Protocol 2 (eliminando la almohadilla del principio de linea y editando donde pone "1.1")

17. Chequea si SSH está en un puerto no-estándar. Mover SSH a un puerto no-estándar evita escaneos básicos de puertos SSH. Edita /etc/ssh/sshd_config y configura Port nnnn, donde nnnn es un puerto a tu elección. ¡No olvides abrir el puerto en el cortafuegos antes!

18. Chequea en SSH "PasswordAuthentication". Para la seguridad definitiva de SSH, puedes considerar desactivar esta opción y permitir acceso sólo usando "PubKeyAuthentication".

19. Chequea que el puerto 23 de telnet no está en uso. Cierra este puerto en tu cortafuegos. Telnet es un protocolo inseguro y deberías desactivar el servicio telnet si está ejecutándose.

20. Chequea los límites de recursos de la shell. Deberías activarlos para prevenir que los usuarios de shell consuman recursos de servidor (exploits de DoS, mayormente). Si estás usando cPanel/WHM activa "Shell Fork Bomb Protection".

21. Desactiva todas las instancias de IRC - BitchX, bnc, eggdrop, sniffers genéricos, servicios guardianes, ircd, psyBNC, ptlink. Si estás usando WHM puedes hacerlo en "Background Process Killer".

22. Chequea el modulo mod_security en apache. Debería estar instalado.

23. Chequea el modulo mod_evasive en apache- Deberías instalarlo desde el código fuente para evitar ataques DoS contra apache. Cuidado porque este módulo se carga la funcionalidad de FrontPage.

24. Chequea el valor RLimitCPU de apache. Deberías establecer un valor para evitar scripts que consuman recursos de servidor (exploits de DoS).

25. Igualmente para el valor RLimitMEM.

26. Chequea el valor de enable_dl en php. Deberías modificar /usr/local/lib/php.ini y configurar enable_dl = off. Esto previene a los usuarios de ejecutar modulos php que afecten a cualquiera en el servidor. Nota que si se usan librerías dinámicas, como ioncube, deberás cargarlas directamente en php.ini

27. Chequea el valor de disable_functions en php. Deberías modificar /usr/local/lib/php.ini y desactivar las funciones más comúnmente atacadas. Por ejemplo:disable_functions = show_resource, system, shell_exec, passthru, exec, phpinfo, popen, proc_open. Algunos scripts de clientes web pueden fallar con algunas de estas funciones desactivadas, así que tendrás que quitarlas de esta lista.

28. Chequea phpsuexec. Para reducir el riesgo de que hackers accedan a todos los sitios del servidor desde un script web, deberías activar phpsuexec cuando construyes apache/php. Nota que hay efectos laterales cuando se activa phpsuexec en un servidor y debes tenerlos en cuenta antes de activarlos.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2006/05/17/kreo-k-hestoi-listo-xa-canviar-linus/index.html b/blog/2006/05/17/kreo-k-hestoi-listo-xa-canviar-linus/index.html new file mode 100644 index 0000000..1673b91 --- /dev/null +++ b/blog/2006/05/17/kreo-k-hestoi-listo-xa-canviar-linus/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kreo K Hestoi Listo Xa Canviar a Linus - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ May 17 + 06 + 13:21 +
+ + Kreo K Hestoi Listo Xa Canviar a Linus +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Vale. Has pensado, tras constantes comidas de cabeza de tus amigos frikis, que linux es lo que necesitas para que "nadie te robe los archivos" ni se te ponga "malito" el ordenador a causa de los virus "que son mú malos". Te han hablado maravillas y que Linux puede parecerse (visualmente) a Windows todo lo que tú quieras, y que hay programas análogos a todos los que en él tienes para que no tengas excusas. Bien. Ahora me toca a mí. No me queda más remedio que darte un par de avisos acerca de lo que linux NO puede hacer hoy por hoy:

  • Cuando compras un juego (y eso es culpa del fabricante), aunque ponga PC-CDROM, puede NO funcionar con linux. ¿Por qué? Porque donde dice "PC" debería decir "Win". Así de mal. Y debería haber etiquetas según el sistema. Por ejemplo: logo de windows + CDROM; pingüino + CDROM; Manzanita mordida + CDROM. Así queda muy, pero muy claro, para qué plataforma está soportado ese juego. ¿O es que no hacen lo mismo con Xbox-360 y PS2 (por poner un ejemplo)?

  • El software específico de tu empresa puede NO funcionar. Si eres programador de centralitas, o quieres el Contapús Sibarita Gañán, tal vez necesites un equipo con la plataforma para la que fue creado.

  • Si no sabes escribir como $DIOS manda, no quiero que uses linux. Muchos de la comunidad no queremos que uses linux. Vuélvete al sueño de Matrix y déjanos tranquilos.

  • Deja de pensar en descargarte un "setup.exe". Esto es un sistema DIS-TIN-TO. Los basados en debian usarán una herramienta; los basados en Red Hat, otra. Pero no (repito-NO) hay un setup.exe .


Y ahora que te he devuelto a la realidad, y si sigues pensando que quieres linux, te recomiendo algo de hardware:

  • Que esté basado en 64bits. ¿Por qué? Porque los 32 tienden a su extinción. AMD64, Core2Duo... el que tú quieras, pero 64 bits. La velocidad es indistinta, siempre que cumplan ese requisito.

  • Tarjeta nVidia, hasta que AMD/ATI cumpla y proporcione drivers de calidad. No te puedes imaginar la cantidad de comentarios en los foros acerca de los problemas de instalación de los drivers de ATI.

  • 1 GB de RAM. Así te lo suelto. Sí, linux puede ir con menos, pero para hacerlo parecido a Windows/MacOSX vas a necesitar algo más que intenciones.

  • Dedicar 10 GB de tu disco duro al sistema. El resto, todo lo grande que tú quieras. Es más, si puedes, un disco lo más pequeño del mercado y otro todo lo grandote que puedas. Uno, sistema operativo. El otro, tu morralla. Ya sé que Windows se instala en menos de 2 GB, pero no te viene con Ófis ni cortafuegos (no, no considero cortafuegos a la porquería del SP2) ni antivirus ni editor de fotos ni... ¡ah! ¡que sí que te viene! pues eso es porque el que te ha vendido el equipo está haciendo una instalación ILEGAL de software


Esta lista está sujeta a modificación y/o crítica constructiva, toda ayuda es naturalmente bienvenida.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2006/06/07/iconos-oxygen-en-kde-35x/index.html b/blog/2006/06/07/iconos-oxygen-en-kde-35x/index.html new file mode 100644 index 0000000..8753187 --- /dev/null +++ b/blog/2006/06/07/iconos-oxygen-en-kde-35x/index.html @@ -0,0 +1,433 @@ + + + + + + + + Iconos Oxygen en KDE 3.5.x - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jun 7 + 06 + 13:22 +
+ + Iconos Oxygen en KDE 3.5.x +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Los usuarios de PCs que siguen noticias de linux saben que se aproxima un cambio evolutivo en el sistema de escritorio KDE. En su versión 4.0, este entorno proporcionará una mayor coherencia entre sus componentes visuales (Plasma), auditivos (Phonon/decibel) y de control de hardware (Solid), de manera que tendremos que preocuparnos menos de configuraciones y más de hacer un entorno a nuestro gusto y medida. Entre los cambios visuales que traerá consigo se encuentra el juego de iconos Oxygen, de alta calidad y que han seguido un estudio de usabilidad para hacernos más fácil saber qué tipo de archivo estamos tratando según su icono asociado. Pero, ¿tenemos que esperar a KDE 4? ¡Pues no! No necesariamente, vaya. Con un par de arreglos podemos tener los iconos de oxygen listos para el uso y deleite cotidiano en nuestro actual KDE. Vamos por partes:

  1. Ten instalado el paquete subversion. No es necesario realmente, pero si te gusta ir viendo los cambios y añadidos que van implementando los iconos, es muy recomendable.

  2. Instala también el paquete kde-icons-nuovext. Luego entenderás por qué.

  3. Copia la carpeta /usr/share/icons/hicolor a tu carpeta $HOME/.kde/share/icons/ . Todos los conjuntos iconos tienen una propiedad (se ve en el index.theme de la carpeta del conjunto) que hacen que hereden del conjunto hicolor. Así que, tratándose de versiones SVN (ergo, incompletas) de iconos, vamos a dar antes un poco de coherencia al conjunto

  4. Ahora, copia el contenido de /usr/share/icons/crsytalsvg a $HOME/.kde/share/icons/hicolor, esto es, cp -R /usr/share/icons/crystalsvg/* $HOME/.kde/share/icons/hicolor/. Esto sobreescribirá los antiguos iconos hicolor por crystal, bastante más vistosos.

  5. Ahora viene nuovext. Realiza el mismo paso anterior, esto es, cp -R /usr/share/icons/nuovext/* $HOME/.kde/share/icons/hicolor/. Los iconos nuovext se parecen mucho más a los futuros oxygen que los de crystal.

  6. Copia únicamente el archivo /usr/share/icons/hicolor/index.theme en la carpeta $HOME/.kde/share/icons/hicolor

  7. Explico estos cuatro pasos anteriores como capas de una imagen: Primero establecemos la base o "fondo" a partir del estándar, hicolor. No obstante, esta base está bastante obsoleta y la actualizamos con crystal, que sería la primera capa. Esto nos daría realmente el mismo resultado que tener el juego de iconos crystal por defecto, dada la herencia que antes he mencionado con hicolor. Pero como crystal difiere del objetivo final, añadimos una capa más (nuovext) que tiene un mayor parecido. Visualmente ya estaría, pero para que oxygen crea que este conjunto de iconos es el hicolor (del cual heredará todos los iconos que él no tenga), tenemos que hacérselo creer, y es por eso que copiamos el archivo index.theme

  8. Sólo queda descargar el archivo oxygen.tar.bz2 (¡¡CUIDADO!! SON 82MB DE DESCARGA) y descomprimirlo en $HOME/.kde/share/icons mediante tar -xjvf oxygen.tar.bz2. Esto ya SI es el conjunto oxygen del futuro KDE 4.

  9. Bien, doy por sentado que sabeis cambiar el conjunto de iconos. Yo lo hago desde kcontrol porque no me convence ksystemsettings, pero tanto con uno como con otro resulta bastante fácil.


Listo, ya teneis el futuro oxygen para vuestro disfrute personal. Ahora, si queréis que se reflejen los cambios que van haciendo a los iconos, abrís una consola, entrais en $HOME/.kde/share/icons/oxygen y tecleais svn update, que actualizará los iconos a la última versión del SVN.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2007/04/10/kubuntu-70-gutsy-gibbon-tribe-4/index.html b/blog/2007/04/10/kubuntu-70-gutsy-gibbon-tribe-4/index.html new file mode 100644 index 0000000..1e309ca --- /dev/null +++ b/blog/2007/04/10/kubuntu-70-gutsy-gibbon-tribe-4/index.html @@ -0,0 +1,433 @@ + + + + + + + + Kubuntu 7.0 (Gutsy Gibbon) Tribe 4 Disponible - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Apr 10 + 07 + 13:23 +
+ + Kubuntu 7.0 (Gutsy Gibbon) Tribe 4 Disponible +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Tal y como se encuentra kubuntu-es, que parece que no levanta cabeza con el tema del hosting (*suspiro*), voy a dar la noticia en mi blog, porque hay novedades que considero interesantes:

  • Nuevo administrador de controladores restrictivos. ¿Que qué es esto? Bueno, primero explicaré un poquito la cosa. Muchas empresas, al tener que investigar sobre Sistemas Operativos de código cerrado el cómo funcionarán sus dispositivos, gastan una buena cantidad de pasta en programadores y licencias de uso. Para cuando el producto funciona lo suficientemente bien como para sacarlo al mercado, la inversión ha sido tal y los acuerdos con dichos creadores de sistema tan súmamente restrictivos, que los fabricantes se encuentran o bien sin efectivos, o bien imposibilitados por contrato, o bien porque en realidad se la suda completamente. Para esto último, desgraciadamente, no hay solución. Para el primero y el segundo, una posibilidad (que afortunadamente se acepta más) es liberar el código y que "los frikis de linux" se curren un controlador. Y luego la que hace por ejemplo nvidia, que es proporcionar drivers para el sistema, aunque cerrados. Para esto último es para lo que sirve este administrador de controladres restrictivos. Dado que la licencia de libre distribución de Ubuntu choca con la "no-libre" distribución de algunos controladores (como el ejemplo de nvidia), se utiliza este gestor para que el usuario pueda descargarlos e instalarlos cómodamente y sin necesidad de usar la malquerida consola (no sé yo qué tirria le tiene la gente, cuando no hay nada más rápido y efectivo).

  • Se instala la biblioteca QT 4.3.1, con código optimizado para máquinas nuevas

  • Edubuntu, la distribución dedicada a la educación, también estará disponible con KDE como escritorio

  • Actualización de 7.04 (Feisty) a 7.10 (Gusty) a través de adept. ¡Adiós otra vez a la consola! Si tienes instalado feisty, ejecuta (Alt+F2) kdesu "adept_manager --version-upgrade". Si ya tienes instalado gutsy y quieres actualizar, ejecuta (Alt+F2)kdesu "adept_manager --dist-upgrade-devel"

  • KMail ya viene instalado con herramientas GPG activadas. GPG es un conjunto de encriptación/desencriptación de datos que permite que el correo electrónico lo tenga que leer su destinatario y nadie más

  • ¡¡ KDE 4 beta 1 !! Paquetes disponibles e integrados en el sistema de lo que será el futuro KDE 4. No hay actualmente muchas aplicaciones que funcionen sobre él, dado su estado beta y que estamos hablando de una "major release", que es como decir pasarse de NT a 2000 (no, no digo de XP a Vista porque eso es pasarse, pero con la máquina).

  • OpenOffice 2.3, la suite ofimática libre más famosa y usada. Aún se encuentra en estado de desarrollo, pero los chicos de ubuntu han creado binarios para que podamos ir saboreando las nuevas características de esta completa suite.


Si a esto le juntamos la novedad de un front-end (programa visual, con ventanitas y botoncitos) para gdebi, el instalador de paquetes ".deb" de manera local (apt lo hace de manera remota), tendremos una distribución más orientada al usuario final, menos dependiente de la consola, consistente y que separa el código libre y el cerrado. Kubuntu va por buen camino, pero ojalá no tuviera que ceñirse al "Release Plan" de Ubuntu. Me gustaría ver una Gutsy con un definitivo KDE 4, aunque tuviera que esperar a finales de octubre / primeros de noviembre para ello. Bueno, eso y que son 10 desarrolladores a tiempo parcial (menos John Riddell, que es a tiempo completo) frente al < exageración > ejército < /exageración > que tiene montado ubuntu. Capturas de pantalla, anuncio y fuente original: https://wiki.kubuntu.org/GutsyGibbon/Tribe4/Kubuntu
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2007/10/24/los-drivers-de-ati-listos-para-su-uso/index.html b/blog/2007/10/24/los-drivers-de-ati-listos-para-su-uso/index.html new file mode 100644 index 0000000..163dad6 --- /dev/null +++ b/blog/2007/10/24/los-drivers-de-ati-listos-para-su-uso/index.html @@ -0,0 +1,433 @@ + + + + + + + + Los Drivers De ATI Listos Para Su Uso Con Compiz - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 24 + 07 + 13:24 +
+ + Los Drivers De ATI Listos Para Su Uso Con Compiz +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Veo en menéame que ya hay disponible un driver de ATI compatible con Compiz sin necesidad de Xgl (vamos, que por fin los usuarios de ATI pueden hacer las cosas como el resto de los mortales). Enlaza a una página alemana, con instrucciones en inglés: http://forlong.blogage.de/article/2007/10/23/fglrx-8423---finally-with-AIGLX-support# Hago aquí la traducción para el que quiera hacerle uso:

  1. Eliminar Xgl, si está instalado: sudo apt-get remove xserver-xgl

  2. Eliminar el antiguo controlador, si está instalado: sudo apt-get remove xorg-driver-fglrx

  3. Eliminar los antiguos .deb de fglrx: sudo rm -f /usr/src/fglrx-kernel*.deb

  4. Agregar en la lista negra el antiguo módulo fglrx sudo gedit /etc/default/linux-restricted-modules-common DISABLED_MODULES="fglrx"

  5. Alternativamente, elimina el paquete linux-restricted-modules-* de tu kernel, a menos que uses un chip Atheros. Puede que necesites reiniciar.

  6. Descarga el instalador a tu carpeta personal: wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run

  7. Instala los paquetes necesarios: sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic

  8. Crea e instala el paquete .deb: bash ./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb

  9. Compila el módulo del kernel: sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod

  10. Configura el controlador: sudo gedit /etc/X11/xorg.conf

  11. Asegúrate que, en la sección "Device", está puesto el driver "fglrx". Y, si existiera alguna de estas líneas, eliminarla: Section "Extensions" Option "Composite" "0" # or "Disable" EndSection Section "ServerFlags" Option "AIGLX" "off" EndSection

  12. Reiniciar

  13. mkdir -p ~/.config/compiz && echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager .Esto creará un archivo en tu carpeta personal, que asegurará que Compiz se ejecute sin el prefijo anterior.


Y ahora, el .sh para los gandules: #! /bin/bash # Script para la instalación del driver ATI sudo apt-get remove xserver-xgl sudo apt-get remove xorg-driver-fglrx sudo rm -f /usr/src/fglrx-kernel*.deb sudo echo 'DISABLED_MODULES="fglrx"' >> /etc/default/linux-restricted-modules-common wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic bash ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod mkdir -p ~/.config/compiz echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager # #Fin. Recordar cambiar el driver en /etc/X11/xorg.conf y asegurarse de que esté activado Composite y AIGLX # El script puede dar errores en apt-get si ya hay instalados paquetes o ya están eliminados.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2007/11/30/lo-que-nos-traera-kubuntu-hardy/index.html b/blog/2007/11/30/lo-que-nos-traera-kubuntu-hardy/index.html new file mode 100644 index 0000000..4b121d8 --- /dev/null +++ b/blog/2007/11/30/lo-que-nos-traera-kubuntu-hardy/index.html @@ -0,0 +1,433 @@ + + + + + + + + Lo Que Nos Traerá Kubuntu Hardy - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 30 + 07 + 12:24 +
+ + Lo Que Nos Traerá Kubuntu Hardy +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Me ha dado por leerme los blueprints para Hardy, que viene a ser la lista de cosas que les gustaría tener implementadas para esta nueva versión de Kubuntu. Como usuario de KDE que soy, voy a centrarme en lo que nos quieren traer y que afecte a nuestro K-Escritorio.

  • Autenticación con Dominios Windows. Esto tal vez no sea útil para los usuarios convencionales (aka Home/Desktop-users), pero sí para entornos de trabajo. Imaginaos la de programas que hay que utilizan autenticación LDAP o de Active Directory. Imaginaos ahora que un usuario de ubuntu tuviera que andar "enguarrándose" con usuario y contraseña POR APLICACIÓN. Y peor aún, imaginaos a un usuario cuyo administrador de sistemas (que es su labor) cambia las contraseñas cada X tiempo. ¿Entendéis lo útil que puede llegar a ser?

  • Continúa la integración con KDE 4. Aunque hardy no lo traerá por defecto (pensad que es una LTS y quieren estar muy MUY seguros de que todo va a ir como la seda), se van integrando elementos del futuro KDE 4 en Kubuntu. Se usará la estructura de empaquetación de Debian, pero sustituyendo todo aquello que indique kde por kde4, para que coexistan ambos escritorios de manera temporal. Así, en vez de kdebase, por ejemplo, el paquete se llamaría kde4base, se instalará en /usr/lib/kde4, etc.

  • Hacer lo mismo que hace Ubuntu. Puede parecer una chorrada, y bastante mal me parece que tengan que planteárselo como propósito en vez de ser algo inherente, pero aquí está. Quieren que Kubuntu tenga las mismas funcionalidades de Ubuntu. ¿Ninguno se ha tomado Kubuntu Gutsy como un Ubuntu Feisty con paquetes actualizados? Se debe a la preferencia (y cantidad de gente) que se da al escritorio con Gnome. Parece que se van a poner las pilas y ofrecer módulos de configuración de compiz en ksystemsettings (el pseudo-sustituto de kcontrol), instalación automática de impresoras (como ya hace Ubuntu Gutsy), instalación automática de códecs en kaffeine, etc. Para mantener coherencia con KDE 4, usarán PyQT4.


El resto de características en blueprints (44 a fecha de hoy) tienen una influencia mayor en Gnome o en el futuro GoBuntu, Ubuntu optimizado para su virtualización.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/01/03/kde-40-no-es-kde4/index.html b/blog/2008/01/03/kde-40-no-es-kde4/index.html new file mode 100644 index 0000000..f978a3c --- /dev/null +++ b/blog/2008/01/03/kde-40-no-es-kde4/index.html @@ -0,0 +1,433 @@ + + + + + + + + KDE 4.0 No Es KDE4 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 3 + 08 + 12:25 +
+ + KDE 4.0 No Es KDE4 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Hago CopyPaste de un post en kdehispano.org que me ha parecido de lo más acertado en lo que será y lo que no será KDE 4.0:

Como ya digo más abajo, ya hace un año que se hablaba de que KDE 4.0 no iba a ser KDE4. No es cierto que «les ha pillado el toro [...] y que ahora se excusan con lo de sacar el producto a plazos [...] como Akonadi»; hace mucho tiempo que ciertas cosas, como Akonadi, estaban descartadas para KDE 4.0. Aquí mismo en KDEHispano hubo una encuesta que preguntaba qué versión de KDE4 iba a utilizar y una de las respuestas era directamente KDE 4.1, dando por hecho que la versión KDE 4.0 no iba a estar precisamente completa. Pero el asunto no está en discutir si KDE 4.0 está acabado o no, o si lo han sacado deprisa y corriendo o más o menos acorde a sus planes. El asunto es que desde el equipo de KDE (y creo que no sólo desde ahí) se percibe una exagerada expectación ante KDE 4.0, por que el público en general tiende a confundir ambas cosas, y se espera que KDE 4.0 sea la repanocha, cuando lo cierto es que en ciertos ámbitos veremos claramente recortadas las funcionalidades respecto a la última versión de la serie 3.x.


¿Qué temen? Que cuando KDE 4.0 salga a la calle sea públicamente ajusticiado por la parte más «inculta» en asuntos de desarrollo de software de la fauna que puebla el bosque digital que es Internet, es decir, periodistas en busca de sangre sensacionalista, blogueros compulsivos sin visión, comentaristas anónimos y no tan anónimos con la misma falta de visión y más ganas aún de carnaza, y otros chascarristas y descerebrados varios. Y tendrán razón en que KDE 4.0 supone un cierto retroceso en ciertas cosas, tan cierto como que supone un gran avance en otras cosas que están ocultas, en las infraestructuras. Por que estos personajes probablemente no pasarán de echar un rápido vistazo a algún LiveCD, ejecutarán un par de plasmoides y poco más. Y eso será terriblemente injusto.


Por ejemplo, miedo me dan los comentarios que se puedan hacer al respecto de KDE 4.0 en Meneame por parte de los más descerebrados y toda la posible audiencia que pueda leerlos. ¿Y después? Cuando a finales de año salga KDE 4.1 y ya empiece a ser la mencionada repanocha todo el mundo recordará lo malo que (supuestamente) era antes y habrá que vencer una resistencia artificialmente construida en base a esa errónea percepción de la versión 4.0. Así que este tipo de mensajes trata de recordar que las funcionalidades de KDE4 se irán alcanzando según avance el ciclo de vida del software. Desde luego, si luego resulta KDE 4.0 es un desastre habrá que criticarlo sin miramientos, por que ocultar la verdad no sirve de nada y no es desde luego el estilo del mundo del software libre (ocultismos y otras negras artes las dejamos para otros).


En resumen, que hay que tratar de hacer críticas acertadas, con conocimiento de causa. Brevemente: sí, faltarán cosas; sí, estábamos avisados, sí, probablemente pretendían tener más cosas listas; sí, tienen miedo a la reacción de la «crítica rápida superficial» típica de Internet y, por último, creo que se debe simplificar el asunto a «van retrasados y dan excusas».[...]


Y es que la crítica fácil es demasiado... eso, fácil, como para dejarla escapar. Nos encanta desmerecer el trabajo ajeno sin tener ni zorra idea de lo que se ha trabajado en él. Así que, señores fanboys, aparte de las flechas, vayan preparando escudos. No pienso quedarme de brazos cruzados mientras intentan desmembrar el trabajo DESINTERESADO de un grupo de personas que, con cada versión, acercan el software libre al usuario de a pie por un lado, y simplifican la tarea de desarrollo por otro.


El que avisa no es traidor.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/05/01/kde-41-ya-tiene-una-alfa/index.html b/blog/2008/05/01/kde-41-ya-tiene-una-alfa/index.html new file mode 100644 index 0000000..25fd9f2 --- /dev/null +++ b/blog/2008/05/01/kde-41-ya-tiene-una-alfa/index.html @@ -0,0 +1,433 @@ + + + + + + + + KDE 4.1 Ya Tiene Una Alfa - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ May 1 + 08 + 13:28 +
+ + KDE 4.1 Ya Tiene Una Alfa +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
La gente de KDE ya tiene disponible su primera alfa de lo que será la versión 4.1 de este entorno gráfico. La principal característica que diferencia esta nueva de la anterior 4.0 es su destino: el usuario final (recordemos que la anterior estaba destinada a desarrolladores para que fueran migrando sus aplicaciones a la nueva rama KDE4). Con esta nueva alfa, tenemos también una novedad: multiplataforma. El más purista (y quisquilloso) podría decirme que eso ya era viable gracias a cygwin, y en cierto modo así es. Sin embargo, cygwin es una capa que instala las aplicaciones que así lo permiten, y KDE 4.1 será completamente nativo. No creo que sea necesario decir que difícilmente se trasladará el escritorio, sino más bien las aplicaciones que sobre él corren. Imaginaos, por ejemplo, la introducción de amaroK en el mundo windows: cuidado Winamp, cuidado iTunes. En el campo del correo electrónico, imaginaos un kmail que fuera válido tanto para empresa como para particulares. En el de mensajería (quitando el famoso pidgin), kopete con su posibilidad de multiprotocolo (MSN, AIM, Yahoo IM, gTalk/Jabber, IRC...). En fin, el lector menos avispado notará que se me está haciendo la boca agua. No es para menos, ya que también es un camino que allana la migración de los usuarios a sistemas abiertos (FreeBSD, OpenSolaris, Linux). Primero se le acostumbra al nuevo conjunto de aplicaciones, se le explica sus bondades y demuestra su utilidad, y poco a poco, cuando se encuentre cómodo, ¡ZAS! En toda la boc... esteee... se le cambia el sistema operativo. Nota para hoygans: chavales, si os aparece una palabra subrayada en rojo ondulado, no significa que el programa la considere importante. Es que está mal escrita. (Ventajas del aspell en todo lo que huele a KDE).
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/09/10/vuelta-debian/index.html b/blog/2008/09/10/vuelta-debian/index.html new file mode 100644 index 0000000..1cc7554 --- /dev/null +++ b/blog/2008/09/10/vuelta-debian/index.html @@ -0,0 +1,439 @@ + + + + + + + + Vuelta a Debian - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Sep 10 + 08 + 18:48 +
+ + Vuelta a Debian +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Tras todo este tiempo perteneciendo a la saga de seguidores de kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes "testing", a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/09/22/vlc-092-con-interfaz-qt4/index.html b/blog/2008/09/22/vlc-092-con-interfaz-qt4/index.html new file mode 100644 index 0000000..2967cdf --- /dev/null +++ b/blog/2008/09/22/vlc-092-con-interfaz-qt4/index.html @@ -0,0 +1,439 @@ + + + + + + + + VLC 0.9.2, Con Interfaz QT4 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Sep 22 + 08 + 23:01 +
+ + VLC 0.9.2, Con Interfaz QT4 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
A estas alturas no es noticia que el reproductor multimedia VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro "Debian-like" que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con "su" o con "sudo", y que no hay salto de línea):
# echo "deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse" > /etc/apt/sources.list.d/ubuntu.list
# echo "deb http://ppa.launchpad.net/c-korn/ubuntu hardy main" >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y --purge remove vlc-* ; apt-get install -y --force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list ... Ahora vamos a darle un aspecto "más KDE". Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos "todo" (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/09/24/virtualbox-20-tambien-es-qt4/index.html b/blog/2008/09/24/virtualbox-20-tambien-es-qt4/index.html new file mode 100644 index 0000000..8ef957a --- /dev/null +++ b/blog/2008/09/24/virtualbox-20-tambien-es-qt4/index.html @@ -0,0 +1,439 @@ + + + + + + + + Virtualbox 2.0 También Es QT4 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Sep 24 + 08 + 22:52 +
+ + Virtualbox 2.0 También Es QT4 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Si no nos bastaba con que la gente del VLC nos diera la sorpresa de pasar sus widgets a QT4, resulta que VirtualBox, el virtualizador de sistemas operativos, también se pasa a estas librerías para mostrarnos su intefaz.

Aunque la configuración de la red más allá de virtualizar un sistema operativo resulta algo engorrosa, este programa hace auténticas virguerías en conseguir una virtualización casi perfecta (hay muchos artículos que explican cómo ejecutar una aplicación windows en un escritorio linux a través de VirtualBox y RDP) y es altamente recomendable para los que les guste probar distribuciones de linux, o experimentar con SSOO limpios o arreglados según la necesidad.

Puesto que la noticia la he leído en KDE-Hispano y a ellos pertenecen las capturas que he visto, os dejo el enlace para que le echeis un ojo: http://www.kdehispano.es/?q=content/lanzado-virtualbox-20
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/10/22/kde-42-los-mensajes-emergentes/index.html b/blog/2008/10/22/kde-42-los-mensajes-emergentes/index.html new file mode 100644 index 0000000..11fe253 --- /dev/null +++ b/blog/2008/10/22/kde-42-los-mensajes-emergentes/index.html @@ -0,0 +1,439 @@ + + + + + + + + KDE 4.2 "Arreglará" Los Mensajes Emergentes - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 22 + 08 + 11:17 +
+ + KDE 4.2 "Arreglará" Los Mensajes Emergentes +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
KDE 4.2 tiene pensado salir como estable para finales de enero de 2009 (concretamente, el 27, según su planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el "arreglo" de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide "systray", de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha "plasmizado" para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de "KDE4 no es KDE 4.0" y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde/index.html b/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde/index.html new file mode 100644 index 0000000..f5a8b09 --- /dev/null +++ b/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde/index.html @@ -0,0 +1,439 @@ + + + + + + + + QT Creator, ¿un Posible RAD Para QT/KDE? - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 31 + 08 + 16:46 +
+ + QT Creator, ¿un Posible RAD Para QT/KDE? +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/11/07/estado-actual-de-k3b/index.html b/blog/2008/11/07/estado-actual-de-k3b/index.html new file mode 100644 index 0000000..8bc4be0 --- /dev/null +++ b/blog/2008/11/07/estado-actual-de-k3b/index.html @@ -0,0 +1,439 @@ + + + + + + + + Estado Actual De K3b - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 7 + 08 + 23:17 +
+ + Estado Actual De K3b +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b "sufre" un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es "sólo" la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/11/07/objetivos-y-mejoras-de-kde-42/index.html b/blog/2008/11/07/objetivos-y-mejoras-de-kde-42/index.html new file mode 100644 index 0000000..9128737 --- /dev/null +++ b/blog/2008/11/07/objetivos-y-mejoras-de-kde-42/index.html @@ -0,0 +1,439 @@ + + + + + + + + Objetivos Y Mejoras De KDE 4.2 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 7 + 08 + 20:20 +
+ + Objetivos Y Mejoras De KDE 4.2 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Puesto que hace mucho que no escribo en este blog (y eso que sabía el compromiso que tengo al separar mi antiguo blog en 2 para no mezclar vida privada y labor informática), me he puesto a mirar la página de techbase de KDE, donde figuran los planes y objetivos con cada versión grande.

Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes "Plasmagik" (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo "VI") en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • "Modo administrador" en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2008/11/14/avidemux/index.html b/blog/2008/11/14/avidemux/index.html new file mode 100644 index 0000000..96edeba --- /dev/null +++ b/blog/2008/11/14/avidemux/index.html @@ -0,0 +1,439 @@ + + + + + + + + Avidemux "a-la-QT" - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Nov 14 + 08 + 16:52 +
+ + Avidemux "a-la-QT" +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2009/01/14/critica-humoristica-wine/index.html b/blog/2009/01/14/critica-humoristica-wine/index.html new file mode 100644 index 0000000..0043d98 --- /dev/null +++ b/blog/2009/01/14/critica-humoristica-wine/index.html @@ -0,0 +1,439 @@ + + + + + + + + Crítica Humorística a Wine - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 14 + 09 + 15:30 +
+ + Crítica Humorística a Wine +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Wine se encuentra actualmente en su versión de desarrollo 1.1.12 . Desde que el proyecto viera la luz, muchos cambios han pasado por su código fuente, incluída la incorporación/implementación del código necesario para muchas de las funciones de DirectX (¡y van por la 10!), lo que es un logro digno de admiración.

No obstante, y pretendiendo ser realistas, las implementaciones del código aún distan de ser suficientes para permitir cualquier juego. Si bien puedo hacer que funcionen títulos como "Tomb Raider Anniversary", "World of Warcraft" o "The Witcher", en algunos otros casos debemos decir que sí, que ejecutarse se ejecuta, pero aún queda para decir que es "jugable". Por lo menos a ojos del equipo de desarrollo del videojuego.

Tal es el caso del Principe de Persia 2008, calidad artística donde las haya, que puede instalarse en Linux (eso nos cuentan los chicos de PlayOnLinux) aunque yo diría que lo que puede hacerse es "ejecutarse": hay que bajar la resolución al mínimo, quitar las texturas HD... en fin, y cuando consigues que funcione, ve guardando cada poco, que puede írsete al cuerno y aparecer tu bonito escritorio (con compiz o sin él).

Os pongo una muestra de cómo queda el juego según la plataforma:

Win/XBox360

pop_win_cara
pop_win_paisaje

Linux, sin texturas, a baja resolución, rezándole a algún beato:

pop_linux_cara pop_linux_paisaje

Bueno, os dejo que tengo un mago que se no sube de nivel solito. Que vuestros días sean largos, y escasos los contratiempos ;)
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt/index.html b/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt/index.html new file mode 100644 index 0000000..8fb9bed --- /dev/null +++ b/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt/index.html @@ -0,0 +1,439 @@ + + + + + + + + Nokia Añade La Licencia LGPL a QT - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Jan 14 + 09 + 12:31 +
+ + Nokia Añade La Licencia LGPL a QT +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2009/02/08/repositorio-para-testingamd64/index.html b/blog/2009/02/08/repositorio-para-testingamd64/index.html new file mode 100644 index 0000000..cb17579 --- /dev/null +++ b/blog/2009/02/08/repositorio-para-testingamd64/index.html @@ -0,0 +1,439 @@ + + + + + + + + Repositorio Para Testing/amd64 - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 8 + 09 + 00:51 +
+ + Repositorio Para Testing/amd64 +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
He puesto en marcha un pequeño repositorio de paquetes para debian testing (actualmente lenny, en breve squeeze) para la arquitectura amd64.

Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2009/02/14/kde-50-lanzado/index.html b/blog/2009/02/14/kde-50-lanzado/index.html new file mode 100644 index 0000000..c5072d8 --- /dev/null +++ b/blog/2009/02/14/kde-50-lanzado/index.html @@ -0,0 +1,439 @@ + + + + + + + + Debian 5.0 "Lenny" Lanzado - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 14 + 09 + 12:48 +
+ + Debian 5.0 "Lenny" Lanzado +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Como ya anunciaran en su momento los chicos de Debian, Lenny ya ha pasado a ser la nueva versión estable de Debian, tras 22 meses de desarrollo desde la salida de Etch. Soporta 12 arquitecturas de procesador e incluye las versiones más estables (que no las últimas) de KDE, Gnome, Xfce y LXDE.

Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2015/02/17/recuperando-el-blog/index.html b/blog/2015/02/17/recuperando-el-blog/index.html new file mode 100644 index 0000000..3f5140c --- /dev/null +++ b/blog/2015/02/17/recuperando-el-blog/index.html @@ -0,0 +1,433 @@ + + + + + + + + Recuperando El Blog - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 17 + 15 + 15:24 +
+ + Recuperando El Blog +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¡Buenas!

Han pasado unas cuantas (CUANTAS) cosas desde que hice mi última entrada, tanto en mi vida como en el mundo linux. Desconozco la frecuencia con la que escribiré de nuevo, pero quiero darle un uso de sysadmin a este pobre blog, añadiendo trucos, utilidades y tuneaje, aparte de hablar de los pequeños proyectos que tengo en GitHub.

Así que, abracetes y ¡let the Hunger Games begin!
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los/index.html b/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los/index.html new file mode 100644 index 0000000..85a6ae3 --- /dev/null +++ b/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los/index.html @@ -0,0 +1,457 @@ + + + + + + + + Hacer Un Pg_dump Aprovechando Los Cores De La Máquina - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 17 + 15 + 16:06 +
+ + Hacer Un Pg_dump Aprovechando Los Cores De La Máquina +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+

En una forma rápida, podemos lanzar este proceso:

+

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ +
#!/bin/bash
+## This script will create a backup for each database listed in the DATABASES variable
+## Use as postgres user or add the -U [username] to the pg_dump line
+
+DATABASES="template1 db other_db"
+CORES=`nproc`
+TARGET_FOLDER=/var/backups
+
+for DATABASE in $DATABASES; do
+	mkdir -p $TARGET_FOLDER/$DATABASE
+	pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2015/02/19/sendlines-un-expect-simplificado/index.html b/blog/2015/02/19/sendlines-un-expect-simplificado/index.html new file mode 100644 index 0000000..d37385b --- /dev/null +++ b/blog/2015/02/19/sendlines-un-expect-simplificado/index.html @@ -0,0 +1,500 @@ + + + + + + + + Sendlines, Un Expect Simplificado - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 19 + 15 + 17:17 +
+ + Sendlines, Un Expect Simplificado +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import subprocess
+import time
+import sys, getopt
+
+def run(cmd,textFile,delay):
+	with open(textFile,'r') as text:
+		content=text.readlines()
+	p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+	for line in content:
+		p.stdin.write(line+'\n')
+		if(delay): time.sleep(float(delay))
+	p.communicate()[0]
+	p.stdin.close()
+
+def usage():
+	print '''
+		Usage: sendlines -f textFile -c "COMMAND" [ -d DELAY ]
+		- textFile: Text file where read lines from. Mandatory.
+		- COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+		- DELAY: Time (in seconds) to wait between sending lines. Optional.
+		'''
+if __name__ == "__main__":
+	textFile = None
+	command = None
+	delay = None
+	try:
+		opts, args = getopt.getopt(sys.argv[1:], "f:c:d:", ["file=", "command=", "delay="])
+	except getopt.GetoptError as err:
+		# print help information and exit:
+		print str(err) # will print something like "option -a not recognized"
+		sys.exit(2)
+	for o, a in opts:
+		if o in ("-f", "--file"):
+			textFile = a
+		elif o in ("-c", "--command"):
+			command = a.split(' ')
+		elif o in ("-d", "--delay"):
+			delay = a
+		else:
+			assert False, "unhandled option"
+			usage()
+	if(command and textFile):
+		run(command,textFile,delay)
+	else:
+		usage()
+		print 'Missing argument(s). Exit\n'
+		sys.exit(2)
+ + + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2015/02/23/passwords-con-caracteres-aleatorios/index.html b/blog/2015/02/23/passwords-con-caracteres-aleatorios/index.html new file mode 100644 index 0000000..6e1b3ad --- /dev/null +++ b/blog/2015/02/23/passwords-con-caracteres-aleatorios/index.html @@ -0,0 +1,479 @@ + + + + + + + + Passwords Con Caracteres Aleatorios - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Feb 23 + 15 + 16:01 +
+ + Passwords Con Caracteres Aleatorios +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento "@".

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import string,random,sys
+
+dictionary = string.ascii_letters + string.digits
+dictionary_extra = '@.-!~'
+N = 10
+
+if(len(sys.argv)>1):
+	if(sys.argv[1][0]=='@'):
+		dictionary += dictionary_extra
+		if(len(sys.argv[1])>1):
+			N=int(sys.argv[1][1:])
+		else:
+			N = int(sys.argv[1])
+print ''.join(random.SystemRandom().choice(dictionary) for _ in range(N))
+ + +

Ejemplos de uso:
+

+$ python randompasswd @20
+Dk5nl8w~.WxrkEj94!V~
+
+$ python randompasswd @
+0KAiU0z@rC
+
+$ python randompasswd
+eqUL9Kaw22G1QFc
+
+ + + +
+ +
+

Comments

+
+
+
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/2015/10/13/from-debian-to-arch-not-as-difficult/index.html b/blog/2015/10/13/from-debian-to-arch-not-as-difficult/index.html new file mode 100644 index 0000000..1ed2c0a --- /dev/null +++ b/blog/2015/10/13/from-debian-to-arch-not-as-difficult/index.html @@ -0,0 +1,482 @@ + + + + + + + + From Debian to Arch: Not as Difficult, Nor Simple Either - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+ + +

+
+ Oct 13 + 15 + 20:40 +
+ + From Debian to Arch: Not as Difficult, Nor Simple Either +

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+
+ + + +
+ +
+

Comments

+
+
+
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/archives/index.html b/blog/archives/index.html new file mode 100644 index 0000000..714daaf --- /dev/null +++ b/blog/archives/index.html @@ -0,0 +1,868 @@ + + + + + + + + Blog Archive - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Blog Archive

+ +
+ +
+ + + + +

2015

+ + + + + + + + + + + + + + + + + + + + + + +

2009

+ + + + + + + + + + + + + + + + + + +

2008

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

2007

+ + + + + + + + + + + + + + +

2006

+ + + + + + + + + + + + + + + + + + +

2005

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/arch/atom.xml b/blog/categories/arch/atom.xml new file mode 100644 index 0000000..b69cb4a --- /dev/null +++ b/blog/categories/arch/atom.xml @@ -0,0 +1,60 @@ + + + + <![CDATA[Category: Arch | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[From Debian to Arch: Not as Difficult, Nor Simple Either]]> + + 2015-10-13T20:40:20+02:00 + http://devopsysadmin.github.io/blog/2015/10/13/from-debian-to-arch-not-as-difficult + Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+]]>
+
+ +
diff --git a/blog/categories/arch/index.html b/blog/categories/arch/index.html new file mode 100644 index 0000000..d820cd3 --- /dev/null +++ b/blog/categories/arch/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Arch - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/automatizacion/atom.xml b/blog/categories/automatizacion/atom.xml new file mode 100644 index 0000000..921b77f --- /dev/null +++ b/blog/categories/automatizacion/atom.xml @@ -0,0 +1,96 @@ + + + + <![CDATA[Category: Automatización | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Sendlines, Un Expect Simplificado]]> + + 2015-02-19T17:17:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado + Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+ + +

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+ + +

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+ + +

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ + +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import subprocess
+import time
+import sys, getopt</p>
+
+<p>def run(cmd,textFile,delay):
+    with open(textFile,&lsquo;r&rsquo;) as text:
+        content=text.readlines()
+    p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+    for line in content:
+        p.stdin.write(line+&lsquo;\n&rsquo;)
+        if(delay): time.sleep(float(delay))
+    p.communicate()[0]
+    p.stdin.close()</p>
+
+<p>def usage():
+    print &lsquo;&rsquo;&lsquo;
+        Usage: sendlines -f textFile -c &ldquo;COMMAND&rdquo; [ -d DELAY ]
+        - textFile: Text file where read lines from. Mandatory.
+        - COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+        - DELAY: Time (in seconds) to wait between sending lines. Optional.
+        &rsquo;&lsquo;&rsquo;
+if <strong>name</strong> == &ldquo;<strong>main</strong>&rdquo;:
+    textFile = None
+    command = None
+    delay = None
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], &ldquo;f:c:d:&rdquo;, [&ldquo;file=&rdquo;, &ldquo;command=&rdquo;, &ldquo;delay=&rdquo;])
+    except getopt.GetoptError as err:
+        # print help information and exit:
+        print str(err) # will print something like &ldquo;option -a not recognized&rdquo;
+        sys.exit(2)
+    for o, a in opts:
+        if o in (&ldquo;-f&rdquo;, &ldquo;&ndash;file&rdquo;):
+            textFile = a
+        elif o in (&ldquo;-c&rdquo;, &ldquo;&ndash;command&rdquo;):
+            command = a.split(&lsquo; &rsquo;)
+        elif o in (&ldquo;-d&rdquo;, &ldquo;&ndash;delay&rdquo;):
+            delay = a
+        else:
+            assert False, &ldquo;unhandled option&rdquo;
+            usage()
+    if(command and textFile):
+        run(command,textFile,delay)
+    else:
+        usage()
+        print &lsquo;Missing argument(s). Exit\n&rsquo;
+        sys.exit(2)

+]]>
+
+ +
diff --git a/blog/categories/automatizacion/index.html b/blog/categories/automatizacion/index.html new file mode 100644 index 0000000..cf45031 --- /dev/null +++ b/blog/categories/automatizacion/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Automatización - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/debian/atom.xml b/blog/categories/debian/atom.xml new file mode 100644 index 0000000..4d0f629 --- /dev/null +++ b/blog/categories/debian/atom.xml @@ -0,0 +1,61 @@ + + + + <![CDATA[Category: Debian | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Debian 5.0 "Lenny" Lanzado]]> + + 2009-02-14T12:48:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/14/kde-50-lanzado + Como ya anunciaran en su momento los chicos de Debian, Lenny ya ha pasado a ser la nueva versión estable de Debian, tras 22 meses de desarrollo desde la salida de Etch. Soporta 12 arquitecturas de procesador e incluye las versiones más estables (que no las últimas) de KDE, Gnome, Xfce y LXDE.

Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D

+]]>
+
+ + + <![CDATA[Repositorio Para Testing/amd64]]> + + 2009-02-08T00:51:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/08/repositorio-para-testingamd64 + He puesto en marcha un pequeño repositorio de paquetes para debian testing (actualmente lenny, en breve squeeze) para la arquitectura amd64.

Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main

+]]>
+
+ + + <![CDATA[Avidemux "a-la-QT"]]> + + 2008-11-14T16:52:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/14/avidemux + Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt

+]]>
+
+ + + <![CDATA[VLC 0.9.2, Con Interfaz QT4]]> + + 2008-09-22T23:01:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/22/vlc-092-con-interfaz-qt4 + A estas alturas no es noticia que el reproductor multimedia VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro “Debian-like” que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con “su” o con “sudo”, y que no hay salto de línea):
# echo “deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse” > /etc/apt/sources.list.d/ubuntu.list
# echo “deb http://ppa.launchpad.net/c-korn/ubuntu hardy main” >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y –purge remove vlc-* ; apt-get install -y –force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list … Ahora vamos a darle un aspecto “más KDE”. Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos “todo” (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

+]]>
+
+ + + <![CDATA[Vuelta a Debian]]> + + 2008-09-10T18:48:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/10/vuelta-debian + Tras todo este tiempo perteneciendo a la saga de seguidores de kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes “testing”, a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución.

+]]>
+
+ +
diff --git a/blog/categories/debian/index.html b/blog/categories/debian/index.html new file mode 100644 index 0000000..2b3e121 --- /dev/null +++ b/blog/categories/debian/index.html @@ -0,0 +1,437 @@ + + + + + + + + Category: Debian - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Category: Debian

+ +
+ +
+ + + + +

2009

+ + + + + + + + + + +

2008

+ + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/edicion/atom.xml b/blog/categories/edicion/atom.xml new file mode 100644 index 0000000..d15818f --- /dev/null +++ b/blog/categories/edicion/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Edición | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Avidemux "a-la-QT"]]> + + 2008-11-14T16:52:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/14/avidemux + Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt

+]]>
+
+ +
diff --git a/blog/categories/edicion/index.html b/blog/categories/edicion/index.html new file mode 100644 index 0000000..bc056b1 --- /dev/null +++ b/blog/categories/edicion/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Edición - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/escritorio/atom.xml b/blog/categories/escritorio/atom.xml new file mode 100644 index 0000000..8332b10 --- /dev/null +++ b/blog/categories/escritorio/atom.xml @@ -0,0 +1,43 @@ + + + + <![CDATA[Category: Escritorio | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Objetivos Y Mejoras De KDE 4.2]]> + + 2008-11-07T20:20:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/objetivos-y-mejoras-de-kde-42 + Puesto que hace mucho que no escribo en este blog (y eso que sabía el compromiso que tengo al separar mi antiguo blog en 2 para no mezclar vida privada y labor informática), me he puesto a mirar la página de techbase de KDE, donde figuran los planes y objetivos con cada versión grande.

Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes “Plasmagik” (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo “VI”) en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • “Modo administrador” en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado.

+]]>
+
+ + + <![CDATA[KDE 4.2 "Arreglará" Los Mensajes Emergentes]]> + + 2008-10-22T11:17:00+02:00 + http://devopsysadmin.github.io/blog/2008/10/22/kde-42-los-mensajes-emergentes + KDE 4.2 tiene pensado salir como estable para finales de enero de 2009 (concretamente, el 27, según su planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el “arreglo” de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide “systray”, de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha “plasmizado” para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de “KDE4 no es KDE 4.0” y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html

+]]>
+
+ + + <![CDATA[VLC 0.9.2, Con Interfaz QT4]]> + + 2008-09-22T23:01:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/22/vlc-092-con-interfaz-qt4 + A estas alturas no es noticia que el reproductor multimedia VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro “Debian-like” que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con “su” o con “sudo”, y que no hay salto de línea):
# echo “deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse” > /etc/apt/sources.list.d/ubuntu.list
# echo “deb http://ppa.launchpad.net/c-korn/ubuntu hardy main” >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y –purge remove vlc-* ; apt-get install -y –force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list … Ahora vamos a darle un aspecto “más KDE”. Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos “todo” (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

+]]>
+
+ +
diff --git a/blog/categories/escritorio/index.html b/blog/categories/escritorio/index.html new file mode 100644 index 0000000..be40de4 --- /dev/null +++ b/blog/categories/escritorio/index.html @@ -0,0 +1,404 @@ + + + + + + + + Category: Escritorio - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/grabacion/atom.xml b/blog/categories/grabacion/atom.xml new file mode 100644 index 0000000..b7c623d --- /dev/null +++ b/blog/categories/grabacion/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Grabación | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Estado Actual De K3b]]> + + 2008-11-07T23:17:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/estado-actual-de-k3b + He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b “sufre” un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es “sólo” la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.

+]]>
+
+ +
diff --git a/blog/categories/grabacion/index.html b/blog/categories/grabacion/index.html new file mode 100644 index 0000000..3299bf9 --- /dev/null +++ b/blog/categories/grabacion/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Grabación - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/k3b/atom.xml b/blog/categories/k3b/atom.xml new file mode 100644 index 0000000..4f64e6f --- /dev/null +++ b/blog/categories/k3b/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: K3b | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Estado Actual De K3b]]> + + 2008-11-07T23:17:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/estado-actual-de-k3b + He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b “sufre” un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es “sólo” la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.

+]]>
+
+ +
diff --git a/blog/categories/k3b/index.html b/blog/categories/k3b/index.html new file mode 100644 index 0000000..7287262 --- /dev/null +++ b/blog/categories/k3b/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: K3b - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/kde/atom.xml b/blog/categories/kde/atom.xml new file mode 100644 index 0000000..6f91f60 --- /dev/null +++ b/blog/categories/kde/atom.xml @@ -0,0 +1,61 @@ + + + + <![CDATA[Category: Kde | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Estado Actual De K3b]]> + + 2008-11-07T23:17:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/estado-actual-de-k3b + He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b “sufre” un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es “sólo” la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.

+]]>
+
+ + + <![CDATA[Objetivos Y Mejoras De KDE 4.2]]> + + 2008-11-07T20:20:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/07/objetivos-y-mejoras-de-kde-42 + Puesto que hace mucho que no escribo en este blog (y eso que sabía el compromiso que tengo al separar mi antiguo blog en 2 para no mezclar vida privada y labor informática), me he puesto a mirar la página de techbase de KDE, donde figuran los planes y objetivos con cada versión grande.

Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes “Plasmagik” (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo “VI”) en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • “Modo administrador” en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado.

+]]>
+
+ + + <![CDATA[QT Creator, ¿un Posible RAD Para QT/KDE?]]> + + 2008-10-31T16:46:00+01:00 + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde + Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator

+]]>
+
+ + + <![CDATA[KDE 4.2 "Arreglará" Los Mensajes Emergentes]]> + + 2008-10-22T11:17:00+02:00 + http://devopsysadmin.github.io/blog/2008/10/22/kde-42-los-mensajes-emergentes + KDE 4.2 tiene pensado salir como estable para finales de enero de 2009 (concretamente, el 27, según su planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el “arreglo” de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide “systray”, de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha “plasmizado” para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de “KDE4 no es KDE 4.0” y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html

+]]>
+
+ + + <![CDATA[Virtualbox 2.0 También Es QT4]]> + + 2008-09-24T22:52:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/24/virtualbox-20-tambien-es-qt4 + Si no nos bastaba con que la gente del VLC nos diera la sorpresa de pasar sus widgets a QT4, resulta que VirtualBox, el virtualizador de sistemas operativos, también se pasa a estas librerías para mostrarnos su intefaz.

Aunque la configuración de la red más allá de virtualizar un sistema operativo resulta algo engorrosa, este programa hace auténticas virguerías en conseguir una virtualización casi perfecta (hay muchos artículos que explican cómo ejecutar una aplicación windows en un escritorio linux a través de VirtualBox y RDP) y es altamente recomendable para los que les guste probar distribuciones de linux, o experimentar con SSOO limpios o arreglados según la necesidad.

Puesto que la noticia la he leído en KDE-Hispano y a ellos pertenecen las capturas que he visto, os dejo el enlace para que le echeis un ojo: http://www.kdehispano.es/?q=content/lanzado-virtualbox-20

+]]>
+
+ +
diff --git a/blog/categories/kde/index.html b/blog/categories/kde/index.html new file mode 100644 index 0000000..fd40a52 --- /dev/null +++ b/blog/categories/kde/index.html @@ -0,0 +1,449 @@ + + + + + + + + Category: Kde - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Category: Kde

+ +
+ +
+ + + + +

2008

+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/linux/atom.xml b/blog/categories/linux/atom.xml new file mode 100644 index 0000000..aeff891 --- /dev/null +++ b/blog/categories/linux/atom.xml @@ -0,0 +1,197 @@ + + + + <![CDATA[Category: Linux | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[From Debian to Arch: Not as Difficult, Nor Simple Either]]> + + 2015-10-13T20:40:20+02:00 + http://devopsysadmin.github.io/blog/2015/10/13/from-debian-to-arch-not-as-difficult + Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+]]>
+
+ + + <![CDATA[Sendlines, Un Expect Simplificado]]> + + 2015-02-19T17:17:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado + Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+ + +

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+ + +

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+ + +

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ + +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import subprocess
+import time
+import sys, getopt</p>
+
+<p>def run(cmd,textFile,delay):
+    with open(textFile,&lsquo;r&rsquo;) as text:
+        content=text.readlines()
+    p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+    for line in content:
+        p.stdin.write(line+&lsquo;\n&rsquo;)
+        if(delay): time.sleep(float(delay))
+    p.communicate()[0]
+    p.stdin.close()</p>
+
+<p>def usage():
+    print &lsquo;&rsquo;&lsquo;
+        Usage: sendlines -f textFile -c &ldquo;COMMAND&rdquo; [ -d DELAY ]
+        - textFile: Text file where read lines from. Mandatory.
+        - COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+        - DELAY: Time (in seconds) to wait between sending lines. Optional.
+        &rsquo;&lsquo;&rsquo;
+if <strong>name</strong> == &ldquo;<strong>main</strong>&rdquo;:
+    textFile = None
+    command = None
+    delay = None
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], &ldquo;f:c:d:&rdquo;, [&ldquo;file=&rdquo;, &ldquo;command=&rdquo;, &ldquo;delay=&rdquo;])
+    except getopt.GetoptError as err:
+        # print help information and exit:
+        print str(err) # will print something like &ldquo;option -a not recognized&rdquo;
+        sys.exit(2)
+    for o, a in opts:
+        if o in (&ldquo;-f&rdquo;, &ldquo;&ndash;file&rdquo;):
+            textFile = a
+        elif o in (&ldquo;-c&rdquo;, &ldquo;&ndash;command&rdquo;):
+            command = a.split(&lsquo; &rsquo;)
+        elif o in (&ldquo;-d&rdquo;, &ldquo;&ndash;delay&rdquo;):
+            delay = a
+        else:
+            assert False, &ldquo;unhandled option&rdquo;
+            usage()
+    if(command and textFile):
+        run(command,textFile,delay)
+    else:
+        usage()
+        print &lsquo;Missing argument(s). Exit\n&rsquo;
+        sys.exit(2)

+]]>
+
+ + + <![CDATA[Hacer Un Pg_dump Aprovechando Los Cores De La Máquina]]> + + 2015-02-17T16:06:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los + Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+ + +

En una forma rápida, podemos lanzar este proceso:

+ + +

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+ + +

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+ + +

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ + +

</p>
+
+<h1>!/bin/bash</h1>
+
+<h2>This script will create a backup for each database listed in the DATABASES variable</h2>
+
+<h2>Use as postgres user or add the -U [username] to the pg_dump line</h2>
+
+<p>DATABASES=&ldquo;template1 db other_db&rdquo;
+CORES=<code>nproc</code>
+TARGET_FOLDER=/var/backups</p>
+
+<p>for DATABASE in $DATABASES; do
+    mkdir -p $TARGET_FOLDER/$DATABASE
+    pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done

+]]>
+
+ + + <![CDATA[Debian 5.0 "Lenny" Lanzado]]> + + 2009-02-14T12:48:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/14/kde-50-lanzado + Como ya anunciaran en su momento los chicos de Debian, Lenny ya ha pasado a ser la nueva versión estable de Debian, tras 22 meses de desarrollo desde la salida de Etch. Soporta 12 arquitecturas de procesador e incluye las versiones más estables (que no las últimas) de KDE, Gnome, Xfce y LXDE.

Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D

+]]>
+
+ + + <![CDATA[Repositorio Para Testing/amd64]]> + + 2009-02-08T00:51:00+01:00 + http://devopsysadmin.github.io/blog/2009/02/08/repositorio-para-testingamd64 + He puesto en marcha un pequeño repositorio de paquetes para debian testing (actualmente lenny, en breve squeeze) para la arquitectura amd64.

Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main

+]]>
+
+ +
diff --git a/blog/categories/linux/index.html b/blog/categories/linux/index.html new file mode 100644 index 0000000..8626d47 --- /dev/null +++ b/blog/categories/linux/index.html @@ -0,0 +1,470 @@ + + + + + + + + Category: Linux - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Category: Linux

+ +
+ +
+ + + + +

2015

+ + + + + + + + + + + + + + +

2009

+ + + + + + + + + + + + + + +

2008

+ + + +
+ + +
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/manjaro/atom.xml b/blog/categories/manjaro/atom.xml new file mode 100644 index 0000000..df1fbeb --- /dev/null +++ b/blog/categories/manjaro/atom.xml @@ -0,0 +1,60 @@ + + + + <![CDATA[Category: Manjaro | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[From Debian to Arch: Not as Difficult, Nor Simple Either]]> + + 2015-10-13T20:40:20+02:00 + http://devopsysadmin.github.io/blog/2015/10/13/from-debian-to-arch-not-as-difficult + Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+]]>
+
+ +
diff --git a/blog/categories/manjaro/index.html b/blog/categories/manjaro/index.html new file mode 100644 index 0000000..e248052 --- /dev/null +++ b/blog/categories/manjaro/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Manjaro - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/password/atom.xml b/blog/categories/password/atom.xml new file mode 100644 index 0000000..dbba74b --- /dev/null +++ b/blog/categories/password/atom.xml @@ -0,0 +1,61 @@ + + + + <![CDATA[Category: Password | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Passwords Con Caracteres Aleatorios]]> + + 2015-02-23T16:01:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/23/passwords-con-caracteres-aleatorios + En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

+ + +

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento “@”.

+ +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import string,random,sys</p>
+
+<p>dictionary = string.ascii_letters + string.digits
+dictionary_extra = &lsquo;@.-!~&rsquo;
+N = 10</p>
+
+<p>if(len(sys.argv)>1):
+    if(sys.argv[1][0]==&lsquo;@&rsquo;):
+        dictionary += dictionary_extra
+        if(len(sys.argv[1])>1):
+            N=int(sys.argv[1][1:])
+        else:
+            N = int(sys.argv[1])
+print &lsquo;&rsquo;.join(random.SystemRandom().choice(dictionary) for _ in range(N))

+ +

Ejemplos de uso:
+

+$ python randompasswd @20
+Dk5nl8w~.WxrkEj94!V~

+ +

$ python randompasswd @ +0KAiU0z@rC

+ +

$ python randompasswd +eqUL9Kaw22G1QFc +

+]]>
+
+ +
diff --git a/blog/categories/password/index.html b/blog/categories/password/index.html new file mode 100644 index 0000000..fc8223b --- /dev/null +++ b/blog/categories/password/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Password - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/postgresql/atom.xml b/blog/categories/postgresql/atom.xml new file mode 100644 index 0000000..c60c71a --- /dev/null +++ b/blog/categories/postgresql/atom.xml @@ -0,0 +1,55 @@ + + + + <![CDATA[Category: Postgresql | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Hacer Un Pg_dump Aprovechando Los Cores De La Máquina]]> + + 2015-02-17T16:06:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los + Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+ + +

En una forma rápida, podemos lanzar este proceso:

+ + +

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+ + +

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+ + +

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ + +

</p>
+
+<h1>!/bin/bash</h1>
+
+<h2>This script will create a backup for each database listed in the DATABASES variable</h2>
+
+<h2>Use as postgres user or add the -U [username] to the pg_dump line</h2>
+
+<p>DATABASES=&ldquo;template1 db other_db&rdquo;
+CORES=<code>nproc</code>
+TARGET_FOLDER=/var/backups</p>
+
+<p>for DATABASE in $DATABASES; do
+    mkdir -p $TARGET_FOLDER/$DATABASE
+    pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done

+]]>
+
+ +
diff --git a/blog/categories/postgresql/index.html b/blog/categories/postgresql/index.html new file mode 100644 index 0000000..79b1667 --- /dev/null +++ b/blog/categories/postgresql/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Postgresql - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/programacion/atom.xml b/blog/categories/programacion/atom.xml new file mode 100644 index 0000000..b0010f5 --- /dev/null +++ b/blog/categories/programacion/atom.xml @@ -0,0 +1,35 @@ + + + + <![CDATA[Category: Programación | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Nokia Añade La Licencia LGPL a QT]]> + + 2009-01-14T12:31:00+01:00 + http://devopsysadmin.github.io/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt + Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
+ +]]>
+
+ + + <![CDATA[QT Creator, ¿un Posible RAD Para QT/KDE?]]> + + 2008-10-31T16:46:00+01:00 + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde + Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator

+]]>
+
+ +
diff --git a/blog/categories/programacion/index.html b/blog/categories/programacion/index.html new file mode 100644 index 0000000..494915a --- /dev/null +++ b/blog/categories/programacion/index.html @@ -0,0 +1,392 @@ + + + + + + + + Category: Programación - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/python/atom.xml b/blog/categories/python/atom.xml new file mode 100644 index 0000000..5511c77 --- /dev/null +++ b/blog/categories/python/atom.xml @@ -0,0 +1,141 @@ + + + + <![CDATA[Category: Python | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Passwords Con Caracteres Aleatorios]]> + + 2015-02-23T16:01:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/23/passwords-con-caracteres-aleatorios + En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

+ + +

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento “@”.

+ +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import string,random,sys</p>
+
+<p>dictionary = string.ascii_letters + string.digits
+dictionary_extra = &lsquo;@.-!~&rsquo;
+N = 10</p>
+
+<p>if(len(sys.argv)>1):
+    if(sys.argv[1][0]==&lsquo;@&rsquo;):
+        dictionary += dictionary_extra
+        if(len(sys.argv[1])>1):
+            N=int(sys.argv[1][1:])
+        else:
+            N = int(sys.argv[1])
+print &lsquo;&rsquo;.join(random.SystemRandom().choice(dictionary) for _ in range(N))

+ +

Ejemplos de uso:
+

+$ python randompasswd @20
+Dk5nl8w~.WxrkEj94!V~

+ +

$ python randompasswd @ +0KAiU0z@rC

+ +

$ python randompasswd +eqUL9Kaw22G1QFc +

+]]>
+
+ + + <![CDATA[Sendlines, Un Expect Simplificado]]> + + 2015-02-19T17:17:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado + Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+ + +

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+ + +

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+ + +

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ + +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import subprocess
+import time
+import sys, getopt</p>
+
+<p>def run(cmd,textFile,delay):
+    with open(textFile,&lsquo;r&rsquo;) as text:
+        content=text.readlines()
+    p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+    for line in content:
+        p.stdin.write(line+&lsquo;\n&rsquo;)
+        if(delay): time.sleep(float(delay))
+    p.communicate()[0]
+    p.stdin.close()</p>
+
+<p>def usage():
+    print &lsquo;&rsquo;&lsquo;
+        Usage: sendlines -f textFile -c &ldquo;COMMAND&rdquo; [ -d DELAY ]
+        - textFile: Text file where read lines from. Mandatory.
+        - COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+        - DELAY: Time (in seconds) to wait between sending lines. Optional.
+        &rsquo;&lsquo;&rsquo;
+if <strong>name</strong> == &ldquo;<strong>main</strong>&rdquo;:
+    textFile = None
+    command = None
+    delay = None
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], &ldquo;f:c:d:&rdquo;, [&ldquo;file=&rdquo;, &ldquo;command=&rdquo;, &ldquo;delay=&rdquo;])
+    except getopt.GetoptError as err:
+        # print help information and exit:
+        print str(err) # will print something like &ldquo;option -a not recognized&rdquo;
+        sys.exit(2)
+    for o, a in opts:
+        if o in (&ldquo;-f&rdquo;, &ldquo;&ndash;file&rdquo;):
+            textFile = a
+        elif o in (&ldquo;-c&rdquo;, &ldquo;&ndash;command&rdquo;):
+            command = a.split(&lsquo; &rsquo;)
+        elif o in (&ldquo;-d&rdquo;, &ldquo;&ndash;delay&rdquo;):
+            delay = a
+        else:
+            assert False, &ldquo;unhandled option&rdquo;
+            usage()
+    if(command and textFile):
+        run(command,textFile,delay)
+    else:
+        usage()
+        print &lsquo;Missing argument(s). Exit\n&rsquo;
+        sys.exit(2)

+]]>
+
+ +
diff --git a/blog/categories/python/index.html b/blog/categories/python/index.html new file mode 100644 index 0000000..ebe871d --- /dev/null +++ b/blog/categories/python/index.html @@ -0,0 +1,389 @@ + + + + + + + + Category: Python - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/qt/atom.xml b/blog/categories/qt/atom.xml new file mode 100644 index 0000000..9ebd6bd --- /dev/null +++ b/blog/categories/qt/atom.xml @@ -0,0 +1,44 @@ + + + + <![CDATA[Category: Qt | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Nokia Añade La Licencia LGPL a QT]]> + + 2009-01-14T12:31:00+01:00 + http://devopsysadmin.github.io/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt + Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
+ +]]>
+
+ + + <![CDATA[Avidemux "a-la-QT"]]> + + 2008-11-14T16:52:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/14/avidemux + Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt

+]]>
+
+ + + <![CDATA[QT Creator, ¿un Posible RAD Para QT/KDE?]]> + + 2008-10-31T16:46:00+01:00 + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde + Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator

+]]>
+
+ +
diff --git a/blog/categories/qt/index.html b/blog/categories/qt/index.html new file mode 100644 index 0000000..996428c --- /dev/null +++ b/blog/categories/qt/index.html @@ -0,0 +1,407 @@ + + + + + + + + Category: Qt - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/testing/atom.xml b/blog/categories/testing/atom.xml new file mode 100644 index 0000000..58a3e59 --- /dev/null +++ b/blog/categories/testing/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Testing | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Vuelta a Debian]]> + + 2008-09-10T18:48:00+02:00 + http://devopsysadmin.github.io/blog/2008/09/10/vuelta-debian + Tras todo este tiempo perteneciendo a la saga de seguidores de kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes “testing”, a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución.

+]]>
+
+ +
diff --git a/blog/categories/testing/index.html b/blog/categories/testing/index.html new file mode 100644 index 0000000..a641d78 --- /dev/null +++ b/blog/categories/testing/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Testing - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/trolltech/atom.xml b/blog/categories/trolltech/atom.xml new file mode 100644 index 0000000..f627f11 --- /dev/null +++ b/blog/categories/trolltech/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Trolltech | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[QT Creator, ¿un Posible RAD Para QT/KDE?]]> + + 2008-10-31T16:46:00+01:00 + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde + Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator

+]]>
+
+ +
diff --git a/blog/categories/trolltech/index.html b/blog/categories/trolltech/index.html new file mode 100644 index 0000000..64f4f94 --- /dev/null +++ b/blog/categories/trolltech/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Trolltech - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/trucos/atom.xml b/blog/categories/trucos/atom.xml new file mode 100644 index 0000000..7e2d9f9 --- /dev/null +++ b/blog/categories/trucos/atom.xml @@ -0,0 +1,135 @@ + + + + <![CDATA[Category: Trucos | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Sendlines, Un Expect Simplificado]]> + + 2015-02-19T17:17:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado + Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+ + +

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+ + +

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+ + +

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ + +

</p>
+
+<h1>!/usr/bin/env python</h1>
+
+<h1>-<em>- coding: utf-8 -</em>-</h1>
+
+<p>import subprocess
+import time
+import sys, getopt</p>
+
+<p>def run(cmd,textFile,delay):
+    with open(textFile,&lsquo;r&rsquo;) as text:
+        content=text.readlines()
+    p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+    for line in content:
+        p.stdin.write(line+&lsquo;\n&rsquo;)
+        if(delay): time.sleep(float(delay))
+    p.communicate()[0]
+    p.stdin.close()</p>
+
+<p>def usage():
+    print &lsquo;&rsquo;&lsquo;
+        Usage: sendlines -f textFile -c &ldquo;COMMAND&rdquo; [ -d DELAY ]
+        - textFile: Text file where read lines from. Mandatory.
+        - COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+        - DELAY: Time (in seconds) to wait between sending lines. Optional.
+        &rsquo;&lsquo;&rsquo;
+if <strong>name</strong> == &ldquo;<strong>main</strong>&rdquo;:
+    textFile = None
+    command = None
+    delay = None
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], &ldquo;f:c:d:&rdquo;, [&ldquo;file=&rdquo;, &ldquo;command=&rdquo;, &ldquo;delay=&rdquo;])
+    except getopt.GetoptError as err:
+        # print help information and exit:
+        print str(err) # will print something like &ldquo;option -a not recognized&rdquo;
+        sys.exit(2)
+    for o, a in opts:
+        if o in (&ldquo;-f&rdquo;, &ldquo;&ndash;file&rdquo;):
+            textFile = a
+        elif o in (&ldquo;-c&rdquo;, &ldquo;&ndash;command&rdquo;):
+            command = a.split(&lsquo; &rsquo;)
+        elif o in (&ldquo;-d&rdquo;, &ldquo;&ndash;delay&rdquo;):
+            delay = a
+        else:
+            assert False, &ldquo;unhandled option&rdquo;
+            usage()
+    if(command and textFile):
+        run(command,textFile,delay)
+    else:
+        usage()
+        print &lsquo;Missing argument(s). Exit\n&rsquo;
+        sys.exit(2)

+]]>
+
+ + + <![CDATA[Hacer Un Pg_dump Aprovechando Los Cores De La Máquina]]> + + 2015-02-17T16:06:00+01:00 + http://devopsysadmin.github.io/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los + Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+ + +

En una forma rápida, podemos lanzar este proceso:

+ + +

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+ + +

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+ + +

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ + +

</p>
+
+<h1>!/bin/bash</h1>
+
+<h2>This script will create a backup for each database listed in the DATABASES variable</h2>
+
+<h2>Use as postgres user or add the -U [username] to the pg_dump line</h2>
+
+<p>DATABASES=&ldquo;template1 db other_db&rdquo;
+CORES=<code>nproc</code>
+TARGET_FOLDER=/var/backups</p>
+
+<p>for DATABASE in $DATABASES; do
+    mkdir -p $TARGET_FOLDER/$DATABASE
+    pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done

+]]>
+
+ +
diff --git a/blog/categories/trucos/index.html b/blog/categories/trucos/index.html new file mode 100644 index 0000000..3af93e1 --- /dev/null +++ b/blog/categories/trucos/index.html @@ -0,0 +1,389 @@ + + + + + + + + Category: Trucos - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml new file mode 100644 index 0000000..751fef6 --- /dev/null +++ b/blog/categories/video/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Video | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Avidemux "a-la-QT"]]> + + 2008-11-14T16:52:00+01:00 + http://devopsysadmin.github.io/blog/2008/11/14/avidemux + Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt

+]]>
+
+ +
diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html new file mode 100644 index 0000000..4455edc --- /dev/null +++ b/blog/categories/video/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Video - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/blog/categories/videojuegos/atom.xml b/blog/categories/videojuegos/atom.xml new file mode 100644 index 0000000..dc4d4e3 --- /dev/null +++ b/blog/categories/videojuegos/atom.xml @@ -0,0 +1,25 @@ + + + + <![CDATA[Category: Videojuegos | /sys/admin]]> + + + 2015-12-29T11:34:22+01:00 + http://devopsysadmin.github.io/ + + + + + Octopress + + + + <![CDATA[Crítica Humorística a Wine]]> + + 2009-01-14T15:30:00+01:00 + http://devopsysadmin.github.io/blog/2009/01/14/critica-humoristica-wine + Wine se encuentra actualmente en su versión de desarrollo 1.1.12 . Desde que el proyecto viera la luz, muchos cambios han pasado por su código fuente, incluída la incorporación/implementación del código necesario para muchas de las funciones de DirectX (¡y van por la 10!), lo que es un logro digno de admiración.

No obstante, y pretendiendo ser realistas, las implementaciones del código aún distan de ser suficientes para permitir cualquier juego. Si bien puedo hacer que funcionen títulos como “Tomb Raider Anniversary”, “World of Warcraft” o “The Witcher”, en algunos otros casos debemos decir que sí, que ejecutarse se ejecuta, pero aún queda para decir que es “jugable”. Por lo menos a ojos del equipo de desarrollo del videojuego.

Tal es el caso del Principe de Persia 2008, calidad artística donde las haya, que puede instalarse en Linux (eso nos cuentan los chicos de PlayOnLinux) aunque yo diría que lo que puede hacerse es “ejecutarse”: hay que bajar la resolución al mínimo, quitar las texturas HD… en fin, y cuando consigues que funcione, ve guardando cada poco, que puede írsete al cuerno y aparecer tu bonito escritorio (con compiz o sin él).

Os pongo una muestra de cómo queda el juego según la plataforma:

Win/XBox360

pop_win_cara
pop_win_paisaje

Linux, sin texturas, a baja resolución, rezándole a algún beato:

pop_linux_cara pop_linux_paisaje

Bueno, os dejo que tengo un mago que se no sube de nivel solito. Que vuestros días sean largos, y escasos los contratiempos ;)

+]]>
+
+ +
diff --git a/blog/categories/videojuegos/index.html b/blog/categories/videojuegos/index.html new file mode 100644 index 0000000..c4af6a4 --- /dev/null +++ b/blog/categories/videojuegos/index.html @@ -0,0 +1,374 @@ + + + + + + + + Category: Videojuegos - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/config.rb b/config.rb deleted file mode 100644 index 408aeca..0000000 --- a/config.rb +++ /dev/null @@ -1,19 +0,0 @@ -require 'sass-globbing' - -# Require any additional compass plugins here. -project_type = :stand_alone - -# Publishing paths -http_path = "/" -http_images_path = "/images" -http_generated_images_path = "/images" -http_fonts_path = "/fonts" -css_dir = "public/stylesheets" - -# Local development paths -sass_dir = "sass" -images_dir = "source/images" -fonts_dir = "source/fonts" - -line_comments = false -output_style = :compressed diff --git a/config.ru b/config.ru deleted file mode 100644 index 8e3dc08..0000000 --- a/config.ru +++ /dev/null @@ -1,25 +0,0 @@ -require 'bundler/setup' -require 'sinatra/base' - -# The project root directory -$root = ::File.dirname(__FILE__) - -class SinatraStaticServer < Sinatra::Base - - get(/.+/) do - send_sinatra_file(request.path) {404} - end - - not_found do - send_file(File.join(File.dirname(__FILE__), 'public', '404.html'), {:status => 404}) - end - - def send_sinatra_file(path, &missing_file_block) - file_path = File.join(File.dirname(__FILE__), 'public', path) - file_path = File.join(file_path, 'index.html') unless file_path =~ /\.[a-z]+$/i - File.exist?(file_path) ? send_file(file_path) : missing_file_block.call - end - -end - -run SinatraStaticServer diff --git a/.themes/classic/source/favicon.png b/favicon.png similarity index 100% rename from .themes/classic/source/favicon.png rename to favicon.png diff --git a/.themes/classic/source/images/bird_32_gray.png b/images/bird_32_gray.png similarity index 100% rename from .themes/classic/source/images/bird_32_gray.png rename to images/bird_32_gray.png diff --git a/.themes/classic/source/images/bird_32_gray_fail.png b/images/bird_32_gray_fail.png similarity index 100% rename from .themes/classic/source/images/bird_32_gray_fail.png rename to images/bird_32_gray_fail.png diff --git a/.themes/classic/source/images/code_bg.png b/images/code_bg.png similarity index 100% rename from .themes/classic/source/images/code_bg.png rename to images/code_bg.png diff --git a/.themes/classic/source/images/dotted-border.png b/images/dotted-border.png similarity index 100% rename from .themes/classic/source/images/dotted-border.png rename to images/dotted-border.png diff --git a/.themes/classic/source/images/email.png b/images/email.png similarity index 100% rename from .themes/classic/source/images/email.png rename to images/email.png diff --git a/.themes/classic/source/images/line-tile.png b/images/line-tile.png similarity index 100% rename from .themes/classic/source/images/line-tile.png rename to images/line-tile.png diff --git a/.themes/classic/source/images/noise.png b/images/noise.png similarity index 100% rename from .themes/classic/source/images/noise.png rename to images/noise.png diff --git a/.themes/classic/source/images/rss.png b/images/rss.png similarity index 100% rename from .themes/classic/source/images/rss.png rename to images/rss.png diff --git a/.themes/classic/source/images/search.png b/images/search.png similarity index 100% rename from .themes/classic/source/images/search.png rename to images/search.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..571273e --- /dev/null +++ b/index.html @@ -0,0 +1,894 @@ + + + + + + + + /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + + +
+ +
+ + +

+
+ Oct 13 + 15 + 20:40 +
+ + + From Debian to Arch: Not as Difficult, Nor Simple Either

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Recently I’ve changed my laptop main distro from Debian to Manjaro (an Arch-based distribution). Does it mean that the Carmina Burana’s “Oh Fortuna” plays while apt-get falls into the depths of Oblivion? Well, technically yes. I mean, I can listen “Oh Fortuna” or any other piece of music while any linux distribution is being installed. And trully, pacman is NOT apt tools (It doesn’t mean better or worse, just means they are different). But in the meantime I get used to this new approach and enjoy the views of KDE Plasma 5, I needed some help to the transition.

+ +

That’s why I made some small utilities. And uploaded them to my Github. Until the time, there are only two small scripts (one made with python, the another with bash) who simplifies the mental transition between distros.

+ +

The first one, service, is just a simple translation to systemctl (I know, it’s not only related to Arch but any systemd distro. But I haven’t changed yet completely my way for calling start|stop|restart services). Apt.py, as its name suggests, is an apt-to-pacman translation with many, MANY lacks of functionality, but still usable on daily work.

+ +

I will explain with an example: I haven’t uploaded the system for a while right now, so I want to perform ‘apt-get update’ to receive the new packages list and ‘apt-get upgrade’ to upgrade them. Well, with apt.py (installed by setup.sh), I can handle it easily:

+ +

~$ sudo apt-get update

+ +
+pacman -Sy
+core is updated
+extra is updated
+community is updated
+multilib is updated
+
+ + +

Or force the package update, even if it says the zips are updated:

+ +

sudo apt-get update –force

+ +
+pacman -Syy
+:: Sincronizando las bases de datos de los paquetes...
+ core                          134,6 KiB   302K/s 00:00 [############################] 100%
+ extra                        1937,6 KiB   451K/s 00:04 [############################] 100%
+ community                       3,1 MiB   263K/s 00:12 [############################] 100%
+ multilib                      171,7 KiB   695K/s 00:00 [############################] 100%
+
+ + +

Note the pacman -Sy the program prints. It’s because my translator doesn’t want to be a substitute of pacman, but a simpler way to understand it through the apt approaching.

+ +

Hope it helps. Suggestions, as always, are welcome :D

+
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 23 + 15 + 16:01 +
+ + + Passwords Con Caracteres Aleatorios

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento "@".

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import string,random,sys
+
+dictionary = string.ascii_letters + string.digits
+dictionary_extra = '@.-!~'
+N = 10
+
+if(len(sys.argv)>1):
+	if(sys.argv[1][0]=='@'):
+		dictionary += dictionary_extra
+		if(len(sys.argv[1])>1):
+			N=int(sys.argv[1][1:])
+		else:
+			N = int(sys.argv[1])
+print ''.join(random.SystemRandom().choice(dictionary) for _ in range(N))
+ + +

Ejemplos de uso:
+

+$ python randompasswd @20
+Dk5nl8w~.WxrkEj94!V~
+
+$ python randompasswd @
+0KAiU0z@rC
+
+$ python randompasswd
+eqUL9Kaw22G1QFc
+
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 19 + 15 + 17:17 +
+ + + Sendlines, Un Expect Simplificado

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

+

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

+

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

+

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], +donde:
+

    +
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • +
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • +
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • +
+

+ +
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import subprocess
+import time
+import sys, getopt
+
+def run(cmd,textFile,delay):
+	with open(textFile,'r') as text:
+		content=text.readlines()
+	p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
+	for line in content:
+		p.stdin.write(line+'\n')
+		if(delay): time.sleep(float(delay))
+	p.communicate()[0]
+	p.stdin.close()
+
+def usage():
+	print '''
+		Usage: sendlines -f textFile -c "COMMAND" [ -d DELAY ]
+		- textFile: Text file where read lines from. Mandatory.
+		- COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory
+		- DELAY: Time (in seconds) to wait between sending lines. Optional.
+		'''
+if __name__ == "__main__":
+	textFile = None
+	command = None
+	delay = None
+	try:
+		opts, args = getopt.getopt(sys.argv[1:], "f:c:d:", ["file=", "command=", "delay="])
+	except getopt.GetoptError as err:
+		# print help information and exit:
+		print str(err) # will print something like "option -a not recognized"
+		sys.exit(2)
+	for o, a in opts:
+		if o in ("-f", "--file"):
+			textFile = a
+		elif o in ("-c", "--command"):
+			command = a.split(' ')
+		elif o in ("-d", "--delay"):
+			delay = a
+		else:
+			assert False, "unhandled option"
+			usage()
+	if(command and textFile):
+		run(command,textFile,delay)
+	else:
+		usage()
+		print 'Missing argument(s). Exit\n'
+		sys.exit(2)
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 17 + 15 + 16:06 +
+ + + Hacer Un Pg_dump Aprovechando Los Cores De La Máquina

+ + + Comments + + +

+ + + + + + +

+ +
+ + +

Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

+

En una forma rápida, podemos lanzar este proceso:

+

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

+

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

+

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

+ +
#!/bin/bash
+## This script will create a backup for each database listed in the DATABASES variable
+## Use as postgres user or add the -U [username] to the pg_dump line
+
+DATABASES="template1 db other_db"
+CORES=`nproc`
+TARGET_FOLDER=/var/backups
+
+for DATABASE in $DATABASES; do
+	mkdir -p $TARGET_FOLDER/$DATABASE
+	pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE
+done
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 17 + 15 + 15:24 +
+ + + Recuperando El Blog

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¡Buenas!

Han pasado unas cuantas (CUANTAS) cosas desde que hice mi última entrada, tanto en mi vida como en el mundo linux. Desconozco la frecuencia con la que escribiré de nuevo, pero quiero darle un uso de sysadmin a este pobre blog, añadiendo trucos, utilidades y tuneaje, aparte de hablar de los pequeños proyectos que tengo en GitHub.

Así que, abracetes y ¡let the Hunger Games begin!
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 14 + 09 + 12:48 +
+ + + Debian 5.0 "Lenny" Lanzado

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Como ya anunciaran en su momento los chicos de Debian, Lenny ya ha pasado a ser la nueva versión estable de Debian, tras 22 meses de desarrollo desde la salida de Etch. Soporta 12 arquitecturas de procesador e incluye las versiones más estables (que no las últimas) de KDE, Gnome, Xfce y LXDE.

Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D
+ + + + +
+ + +
+ +
+ + +

+
+ Feb 8 + 09 + 00:51 +
+ + + Repositorio Para Testing/amd64

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
He puesto en marcha un pequeño repositorio de paquetes para debian testing (actualmente lenny, en breve squeeze) para la arquitectura amd64.

Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main
+ + + + +
+ + +
+ +
+ + +

+
+ Jan 14 + 09 + 15:30 +
+ + + Crítica Humorística a Wine

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Wine se encuentra actualmente en su versión de desarrollo 1.1.12 . Desde que el proyecto viera la luz, muchos cambios han pasado por su código fuente, incluída la incorporación/implementación del código necesario para muchas de las funciones de DirectX (¡y van por la 10!), lo que es un logro digno de admiración.

No obstante, y pretendiendo ser realistas, las implementaciones del código aún distan de ser suficientes para permitir cualquier juego. Si bien puedo hacer que funcionen títulos como "Tomb Raider Anniversary", "World of Warcraft" o "The Witcher", en algunos otros casos debemos decir que sí, que ejecutarse se ejecuta, pero aún queda para decir que es "jugable". Por lo menos a ojos del equipo de desarrollo del videojuego.

Tal es el caso del Principe de Persia 2008, calidad artística donde las haya, que puede instalarse en Linux (eso nos cuentan los chicos de PlayOnLinux) aunque yo diría que lo que puede hacerse es "ejecutarse": hay que bajar la resolución al mínimo, quitar las texturas HD... en fin, y cuando consigues que funcione, ve guardando cada poco, que puede írsete al cuerno y aparecer tu bonito escritorio (con compiz o sin él).

Os pongo una muestra de cómo queda el juego según la plataforma:

Win/XBox360

pop_win_cara
pop_win_paisaje

Linux, sin texturas, a baja resolución, rezándole a algún beato:

pop_linux_cara pop_linux_paisaje

Bueno, os dejo que tengo un mago que se no sube de nivel solito. Que vuestros días sean largos, y escasos los contratiempos ;)
+ + + + +
+ + +
+ +
+ + +

+
+ Jan 14 + 09 + 12:31 +
+ + + Nokia Añade La Licencia LGPL a QT

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
+ + + + +
+ + +
+ +
+ + +

+
+ Nov 14 + 08 + 16:52 +
+ + + Avidemux "a-la-QT"

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt
+ + + + +
+ + +
+ + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/.themes/classic/source/javascripts/github.js b/javascripts/github.js similarity index 100% rename from .themes/classic/source/javascripts/github.js rename to javascripts/github.js diff --git a/.themes/classic/source/javascripts/libs/jXHR.js b/javascripts/libs/jXHR.js similarity index 100% rename from .themes/classic/source/javascripts/libs/jXHR.js rename to javascripts/libs/jXHR.js diff --git a/.themes/classic/source/javascripts/libs/jquery.min.js b/javascripts/libs/jquery.min.js similarity index 100% rename from .themes/classic/source/javascripts/libs/jquery.min.js rename to javascripts/libs/jquery.min.js diff --git a/.themes/classic/source/javascripts/libs/swfobject-dynamic.js b/javascripts/libs/swfobject-dynamic.js similarity index 100% rename from .themes/classic/source/javascripts/libs/swfobject-dynamic.js rename to javascripts/libs/swfobject-dynamic.js diff --git a/.themes/classic/source/javascripts/modernizr-2.0.js b/javascripts/modernizr-2.0.js similarity index 100% rename from .themes/classic/source/javascripts/modernizr-2.0.js rename to javascripts/modernizr-2.0.js diff --git a/.themes/classic/source/javascripts/octopress.js b/javascripts/octopress.js similarity index 100% rename from .themes/classic/source/javascripts/octopress.js rename to javascripts/octopress.js diff --git a/.themes/classic/source/javascripts/pinboard.js b/javascripts/pinboard.js similarity index 100% rename from .themes/classic/source/javascripts/pinboard.js rename to javascripts/pinboard.js diff --git a/.themes/classic/source/javascripts/twitter.js b/javascripts/twitter.js similarity index 100% rename from .themes/classic/source/javascripts/twitter.js rename to javascripts/twitter.js diff --git a/pages/index.html b/pages/index.html new file mode 100644 index 0000000..47eab19 --- /dev/null +++ b/pages/index.html @@ -0,0 +1,386 @@ + + + + + + + + Páginas - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Páginas

+

+ + + + +

+
+ + + +
+

+ + + + + + + + +

+ + +
+ +
+ +
+ +
+ + + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/pages/nginx-snippets.html b/pages/nginx-snippets.html new file mode 100644 index 0000000..9638e00 --- /dev/null +++ b/pages/nginx-snippets.html @@ -0,0 +1,419 @@ + + + + + + + + Snippets Recopilados De NGINX - /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+
+ +
+

Snippets Recopilados De NGINX

+

+ + + + +

+
+ +

El mundo del SEO nos pone difícil a los sysadmins tener un nginx pequeño y/o fácilmente entendible: redirecciones, reubicaciones, re-todo.

+

Pongo aquí a modo de snippet los usos más frecuentes que se pueden dar en nginx para tenerlos como referencia y esperando que a alguien le sirva:

+ +

+ +
+

+ + + + + + + + + + + + nginx + + + + +

+ + +
+ +
+ +
+ +
+

Comments

+
+
+
+ +
+ + + + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/plugins/backtick_code_block.rb b/plugins/backtick_code_block.rb deleted file mode 100644 index ae4a047..0000000 --- a/plugins/backtick_code_block.rb +++ /dev/null @@ -1,42 +0,0 @@ -require './plugins/pygments_code' - -module BacktickCodeBlock - AllOptions = /([^\s]+)\s+(.+?)\s+(https?:\/\/\S+|\/\S+)\s*(.+)?/i - LangCaption = /([^\s]+)\s*(.+)?/i - def self.render_code_block(input) - @options = nil - @caption = nil - @lang = nil - @url = nil - @title = nil - input.gsub(/^`{3} *([^\n]+)?\n(.+?)\n`{3}/m) do - @options = $1 || '' - str = $2 - - if @options =~ AllOptions - @lang = $1 - @caption = "
#{$2}#{$4 || 'link'}
" - elsif @options =~ LangCaption - @lang = $1 - @caption = "
#{$2}
" - end - - if str.match(/\A( {4}|\t)/) - str = str.gsub(/^( {4}|\t)/, '') - end - if @lang.nil? || @lang == 'plain' - code = HighlightCode::tableize_code(str.gsub('<','<').gsub('>','>')) - "
#{@caption}#{code}
" - else - if @lang.include? "-raw" - raw = "``` #{@options.sub('-raw', '')}\n" - raw += str - raw += "\n```\n" - else - code = HighlightCode::highlight(str, @lang) - "
#{@caption}#{code}
" - end - end - end - end -end diff --git a/plugins/blockquote.rb b/plugins/blockquote.rb deleted file mode 100644 index ebdc0e8..0000000 --- a/plugins/blockquote.rb +++ /dev/null @@ -1,82 +0,0 @@ -# -# Author: Brandon Mathis -# A full rewrite based on the work of: Josediaz Gonzalez - https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/blockquote.rb -# -# Outputs a string with a given attribution as a quote -# -# {% blockquote Bobby Willis http://google.com/search?q=pants the search for bobby's pants %} -# Wheeee! -# {% endblockquote %} -# ... -#
-#

Wheeee!

-#
-# -require './plugins/titlecase.rb' - -module Jekyll - - class Blockquote < Liquid::Block - FullCiteWithTitle = /(\S.*)\s+(https?:\/\/)(\S+)\s+(.+)/i - FullCite = /(\S.*)\s+(https?:\/\/)(\S+)/i - AuthorTitle = /([^,]+),([^,]+)/ - Author = /(.+)/ - - def initialize(tag_name, markup, tokens) - @by = nil - @source = nil - @title = nil - if markup =~ FullCiteWithTitle - @by = $1 - @source = $2 + $3 - @title = $4.titlecase.strip - elsif markup =~ FullCite - @by = $1 - @source = $2 + $3 - elsif markup =~ AuthorTitle - @by = $1 - @title = $2.titlecase.strip - elsif markup =~ Author - @by = $1 - end - super - end - - def render(context) - quote = paragraphize(super) - author = "#{@by.strip}" if @by - if @source - url = @source.match(/https?:\/\/(.+)/)[1].split('/') - parts = [] - url.each do |part| - if (parts + [part]).join('/').length < 32 - parts << part - end - end - source = parts.join('/') - source << '/…' unless source == @source - end - if !@source.nil? - cite = " #{(@title || source)}" - elsif !@title.nil? - cite = " #{@title}" - end - blockquote = if @by.nil? - quote - elsif cite - "#{quote}" - else - "#{quote}" - end - "
#{blockquote}
" - end - - def paragraphize(input) - "

#{input.lstrip.rstrip.gsub(/\n\n/, '

').gsub(/\n/, '
')}

" - end - end -end - -Liquid::Template.register_tag('blockquote', Jekyll::Blockquote) diff --git a/plugins/category_generator.rb b/plugins/category_generator.rb deleted file mode 100644 index 769a55b..0000000 --- a/plugins/category_generator.rb +++ /dev/null @@ -1,184 +0,0 @@ -# encoding: utf-8 -# -# Jekyll category page generator. -# http://recursive-design.com/projects/jekyll-plugins/ -# -# Version: 0.1.4 (201101061053) -# -# Copyright (c) 2010 Dave Perrett, http://recursive-design.com/ -# Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -# -# A generator that creates category pages for jekyll sites. -# -# Included filters : -# - category_links: Outputs the list of categories as comma-separated links. -# - date_to_html_string: Outputs the post.date as formatted html, with hooks for CSS styling. -# -# Available _config.yml settings : -# - category_dir: The subfolder to build category pages in (default is 'categories'). -# - category_title_prefix: The string used before the category name in the page title (default is -# 'Category: '). - -require 'stringex' - -module Jekyll - - # The CategoryIndex class creates a single category page for the specified category. - class CategoryIndex < Page - - # Initializes a new CategoryIndex. - # - # +base+ is the String path to the . - # +category_dir+ is the String path between and the category folder. - # +category+ is the category currently being processed. - def initialize(site, base, category_dir, category) - @site = site - @base = base - @dir = category_dir - @name = 'index.html' - self.process(@name) - # Read the YAML data from the layout page. - self.read_yaml(File.join(base, '_layouts'), 'category_index.html') - self.data['category'] = category - # Set the title for this page. - title_prefix = site.config['category_title_prefix'] || 'Category: ' - self.data['title'] = "#{title_prefix}#{category}" - # Set the meta-description for this page. - meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' - self.data['description'] = "#{meta_description_prefix}#{category}" - end - - end - - # The CategoryFeed class creates an Atom feed for the specified category. - class CategoryFeed < Page - - # Initializes a new CategoryFeed. - # - # +base+ is the String path to the . - # +category_dir+ is the String path between and the category folder. - # +category+ is the category currently being processed. - def initialize(site, base, category_dir, category) - @site = site - @base = base - @dir = category_dir - @name = 'atom.xml' - self.process(@name) - # Read the YAML data from the layout page. - self.read_yaml(File.join(base, '_includes/custom'), 'category_feed.xml') - self.data['category'] = category - # Set the title for this page. - title_prefix = site.config['category_title_prefix'] || 'Category: ' - self.data['title'] = "#{title_prefix}#{category}" - # Set the meta-description for this page. - meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' - self.data['description'] = "#{meta_description_prefix}#{category}" - - # Set the correct feed URL. - self.data['feed_url'] = "#{category_dir}/#{name}" - end - - end - - # The Site class is a built-in Jekyll class with access to global site config information. - class Site - - # Creates an instance of CategoryIndex for each category page, renders it, and - # writes the output to a file. - # - # +category_dir+ is the String path to the category folder. - # +category+ is the category currently being processed. - def write_category_index(category_dir, category) - index = CategoryIndex.new(self, self.source, category_dir, category) - index.render(self.layouts, site_payload) - index.write(self.dest) - # Record the fact that this page has been added, otherwise Site::cleanup will remove it. - self.pages << index - - # Create an Atom-feed for each index. - feed = CategoryFeed.new(self, self.source, category_dir, category) - feed.render(self.layouts, site_payload) - feed.write(self.dest) - # Record the fact that this page has been added, otherwise Site::cleanup will remove it. - self.pages << feed - end - - # Loops through the list of category pages and processes each one. - def write_category_indexes - if self.layouts.key? 'category_index' - dir = self.config['category_dir'] || 'categories' - self.categories.keys.each do |category| - self.write_category_index(File.join(dir, category.to_url), category) - end - - # Throw an exception if the layout couldn't be found. - else - raise <<-ERR - - -=============================================== - Error for category_generator.rb plugin ------------------------------------------------ - No 'category_index.html' in source/_layouts/ - Perhaps you haven't installed a theme yet. -=============================================== - -ERR - end - end - - end - - - # Jekyll hook - the generate method is called by jekyll, and generates all of the category pages. - class GenerateCategories < Generator - safe true - priority :low - - def generate(site) - site.write_category_indexes - end - - end - - - # Adds some extra filters used during the category creation process. - module Filters - - # Outputs a list of categories as comma-separated links. This is used - # to output the category list for each post on a category page. - # - # +categories+ is the list of categories to format. - # - # Returns string - # - def category_links(categories) - categories.sort.map { |c| category_link c }.join(', ') - end - - # Outputs a single category as an link. - # - # +category+ is a category string to format as an link - # - # Returns string - # - def category_link(category) - dir = @context.registers[:site].config['category_dir'] - "#{category}" - end - - # Outputs the post.date as formatted html, with hooks for CSS styling. - # - # +date+ is the date object to format as HTML. - # - # Returns string - def date_to_html_string(date) - result = '' + date.strftime('%b').upcase + ' ' - result << date.strftime('%d ') - result << date.strftime('%Y ') - result - end - - end - -end diff --git a/plugins/code_block.rb b/plugins/code_block.rb deleted file mode 100644 index 539a347..0000000 --- a/plugins/code_block.rb +++ /dev/null @@ -1,92 +0,0 @@ -# Title: Simple Code Blocks for Jekyll -# Author: Brandon Mathis http://brandonmathis.com -# Description: Write codeblocks with semantic HTML5
and
elements and optional syntax highlighting — all with a simple, intuitive interface. -# -# Syntax: -# {% codeblock [title] [url] [link text] %} -# code snippet -# {% endcodeblock %} -# -# For syntax highlighting, put a file extension somewhere in the title. examples: -# {% codeblock file.sh %} -# code snippet -# {% endcodeblock %} -# -# {% codeblock Time to be Awesome! (awesome.rb) %} -# code snippet -# {% endcodeblock %} -# -# Example: -# -# {% codeblock Got pain? painreleif.sh http://site.com/painreleief.sh Download it! %} -# $ rm -rf ~/PAIN -# {% endcodeblock %} -# -# Output: -# -#
-#
Got pain? painrelief.sh Download it! -#

-# -- nicely escaped highlighted code --
-# 
-#
-# -# Example 2 (no syntax highlighting): -# -# {% codeblock %} -# Ooooh, sarcasm... How original! -# {% endcodeblock %} -# -#
-#
<sarcasm> Ooooh, sarcasm... How original!</sarcasm>
-#
-# -require './plugins/pygments_code' -require './plugins/raw' - -module Jekyll - - class CodeBlock < Liquid::Block - CaptionUrlTitle = /(\S[\S\s]*)\s+(https?:\/\/\S+|\/\S+)\s*(.+)?/i - Caption = /(\S[\S\s]*)/ - def initialize(tag_name, markup, tokens) - @title = nil - @caption = nil - @filetype = nil - @highlight = true - if markup =~ /\s*lang:(\S+)/i - @filetype = $1 - markup = markup.sub(/\s*lang:(\S+)/i,'') - end - if markup =~ CaptionUrlTitle - @file = $1 - @caption = "
#{$1}#{$3 || 'link'}
" - elsif markup =~ Caption - @file = $1 - @caption = "
#{$1}
\n" - end - if @file =~ /\S[\S\s]*\w+\.(\w+)/ && @filetype.nil? - @filetype = $1 - end - super - end - - def render(context) - output = super - code = super - source = "
" - source += @caption if @caption - if @filetype - source += "#{HighlightCode::highlight(code, @filetype)}
" - else - source += "#{HighlightCode::tableize_code(code.lstrip.rstrip.gsub(/" - end - source = TemplateWrapper::safe_wrap(source) - source = context['pygments_prefix'] + source if context['pygments_prefix'] - source = source + context['pygments_suffix'] if context['pygments_suffix'] - source - end - end -end - -Liquid::Template.register_tag('codeblock', Jekyll::CodeBlock) diff --git a/plugins/config_tag.rb b/plugins/config_tag.rb deleted file mode 100644 index 92d1f63..0000000 --- a/plugins/config_tag.rb +++ /dev/null @@ -1,44 +0,0 @@ -require 'json' - -class ConfigTag < Liquid::Tag - def initialize(tag_name, options, tokens) - super - options = options.split(' ').map {|i| i.strip } - @key = options.slice!(0) - @tag = nil - @classname = nil - options.each do |option| - @tag = $1 if option =~ /tag:(\S+)/ - @classname = $1 if option =~ /classname:(\S+)/ - end - end - - def render(context) - config_tag(context.registers[:site].config, @key, @tag, @classname) - end -end - -def config_tag(config, key, tag=nil, classname=nil) - options = key.split('.').map { |k| config[k] }.last #reference objects with dot notation - tag ||= 'div' - classname ||= key.sub(/_/, '-').sub(/\./, '-') - output = "<#{tag} class='#{classname}'" - - if options.respond_to? 'keys' - options.each do |k,v| - unless v.nil? - v = v.join ',' if v.respond_to? 'join' - v = v.to_json if v.respond_to? 'keys' - output += " data-#{k.sub'_','-'}='#{v}'" - end - end - elsif options.respond_to? 'join' - output += " data-value='#{config[key].join(',')}'" - else - output += " data-value='#{config[key]}'" - end - output += ">" -end - -Liquid::Template.register_tag('config_tag', ConfigTag) - diff --git a/plugins/gist_tag.rb b/plugins/gist_tag.rb deleted file mode 100644 index 5120115..0000000 --- a/plugins/gist_tag.rb +++ /dev/null @@ -1,130 +0,0 @@ -# A Liquid tag for Jekyll sites that allows embedding Gists and showing code for non-JavaScript enabled browsers and readers. -# by: Brandon Tilly -# Source URL: https://gist.github.com/1027674 -# Post http://brandontilley.com/2011/01/31/gist-tag-for-jekyll.html -# -# Example usage: {% gist 1027674 gist_tag.rb %} //embeds a gist for this plugin - -require 'cgi' -require 'digest/md5' -require 'net/https' -require 'uri' - -module Jekyll - class GistTag < Liquid::Tag - def initialize(tag_name, text, token) - super - @text = text - @cache_disabled = false - @cache_folder = File.expand_path "../.gist-cache", File.dirname(__FILE__) - FileUtils.mkdir_p @cache_folder - end - - def render(context) - if parts = @text.match(/([a-zA-Z\d]*) (.*)/) - gist, file = parts[1].strip, parts[2].strip - else - gist, file = @text.strip, "" - end - if gist.empty? - "" - else - script_url = script_url_for gist, file - code = get_cached_gist(gist, file) || get_gist_from_web(gist, file) - html_output_for script_url, code - end - end - - def html_output_for(script_url, code) - code = CGI.escapeHTML code - <<-HTML -
-
- HTML - end - - def script_url_for(gist_id, filename) - url = "https://gist.github.com/#{gist_id}.js" - url = "#{url}?file=#{filename}" unless filename.nil? or filename.empty? - url - end - - def get_gist_url_for(gist, file) - "https://gist.githubusercontent.com/raw/#{gist}/#{file}" - end - - def cache(gist, file, data) - cache_file = get_cache_file_for gist, file - File.open(cache_file, "w") do |io| - io.write data - end - end - - def get_cached_gist(gist, file) - return nil if @cache_disabled - cache_file = get_cache_file_for gist, file - File.read cache_file if File.exist? cache_file - end - - def get_cache_file_for(gist, file) - bad_chars = /[^a-zA-Z0-9\-_.]/ - gist = gist.gsub bad_chars, '' - file = file.gsub bad_chars, '' - md5 = Digest::MD5.hexdigest "#{gist}-#{file}" - File.join @cache_folder, "#{gist}-#{file}-#{md5}.cache" - end - - def get_gist_from_web(gist, file) - gist_url = get_gist_url_for(gist, file) - data = get_web_content(gist_url) - - locations = Array.new - while (data.code.to_i == 301 || data.code.to_i == 302) - data = handle_gist_redirecting(data) - break if locations.include? data.header['Location'] - locations << data.header['Location'] - end - - if data.code.to_i != 200 - raise RuntimeError, "Gist replied with #{data.code} for #{gist_url}" - end - - cache(gist, file, data.body) unless @cache_disabled - data.body - end - - def handle_gist_redirecting(data) - redirected_url = data.header['Location'] - if redirected_url.nil? || redirected_url.empty? - raise ArgumentError, "GitHub replied with a 302 but didn't provide a location in the response headers." - end - - get_web_content(redirected_url) - end - - def get_web_content(url) - raw_uri = URI.parse url - proxy = ENV['http_proxy'] - if proxy - proxy_uri = URI.parse(proxy) - https = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port).new raw_uri.host, raw_uri.port - else - https = Net::HTTP.new raw_uri.host, raw_uri.port - end - https.use_ssl = true - https.verify_mode = OpenSSL::SSL::VERIFY_NONE - request = Net::HTTP::Get.new raw_uri.request_uri - data = https.request request - end - end - - class GistTagNoCache < GistTag - def initialize(tag_name, text, token) - super - @cache_disabled = true - end - end -end - -Liquid::Template.register_tag('gist', Jekyll::GistTag) -Liquid::Template.register_tag('gistnocache', Jekyll::GistTagNoCache) diff --git a/plugins/haml.rb b/plugins/haml.rb deleted file mode 100644 index 7e548de..0000000 --- a/plugins/haml.rb +++ /dev/null @@ -1,24 +0,0 @@ -module Jekyll - require 'haml' - class HamlConverter < Converter - safe true - priority :low - - def matches(ext) - ext =~ /haml/i - end - - def output_ext(ext) - ".html" - end - - def convert(content) - begin - engine = Haml::Engine.new(content) - engine.render - rescue StandardError => e - puts "!!! HAML Error: " + e.message - end - end - end -end diff --git a/plugins/image_tag.rb b/plugins/image_tag.rb deleted file mode 100644 index 4567000..0000000 --- a/plugins/image_tag.rb +++ /dev/null @@ -1,50 +0,0 @@ -# Title: Simple Image tag for Jekyll -# Authors: Brandon Mathis http://brandonmathis.com -# Felix Schäfer, Frederic Hemberger -# Description: Easily output images with optional class names, width, height, title and alt attributes -# -# Syntax {% img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | "title text" ["alt text"]] %} -# -# Examples: -# {% img /images/ninja.png Ninja Attack! %} -# {% img left half http://site.com/images/ninja.png Ninja Attack! %} -# {% img left half http://site.com/images/ninja.png 150 150 "Ninja Attack!" "Ninja in attack posture" %} -# -# Output: -# -# Ninja Attack! -# Ninja in attack posture -# - -module Jekyll - - class ImageTag < Liquid::Tag - @img = nil - - def initialize(tag_name, markup, tokens) - attributes = ['class', 'src', 'width', 'height', 'title'] - - if markup =~ /(?\S.*\s+)?(?(?:https?:\/\/|\/|\S+\/)\S+)(?:\s+(?\d+))?(?:\s+(?\d+))?(?\s+.+)?/i - @img = attributes.reduce({}) { |img, attr| img[attr] = $~[attr].strip if $~[attr]; img } - if /(?:"|')(?<title>[^"']+)?(?:"|')\s+(?:"|')(?<alt>[^"']+)?(?:"|')/ =~ @img['title'] - @img['title'] = title - @img['alt'] = alt - else - @img['alt'] = @img['title'].gsub!(/"/, '"') if @img['title'] - end - @img['class'].gsub!(/"/, '') if @img['class'] - end - super - end - - def render(context) - if @img - "<img #{@img.collect {|k,v| "#{k}=\"#{v}\"" if v}.join(" ")}>" - else - "Error processing input, expected syntax: {% img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | \"title text\" [\"alt text\"]] %}" - end - end - end -end - -Liquid::Template.register_tag('img', Jekyll::ImageTag) diff --git a/plugins/include_array.rb b/plugins/include_array.rb deleted file mode 100644 index 000040f..0000000 --- a/plugins/include_array.rb +++ /dev/null @@ -1,58 +0,0 @@ -# Title: Include Array Tag for Jekyll -# Author: Jason Woodward http://www.woodwardjd.com -# Description: Import files on your filesystem as specified in a configuration variable in _config.yml. Mostly cribbed from Jekyll's include tag. -# Syntax: {% include_array variable_name_from_config.yml %} -# -# Example 1: -# {% include_array asides %} -# -# _config.yml snippet: -# asides: [asides/twitter.html, asides/custom/my_picture.html] -# -module Jekyll - - class IncludeArrayTag < Liquid::Tag - Syntax = /(#{Liquid::QuotedFragment}+)/ - def initialize(tag_name, markup, tokens) - if markup =~ Syntax - @array_name = $1 - else - raise SyntaxError.new("Error in tag 'include_array' - Valid syntax: include_array [array from _config.yml]") - end - - super - end - - def render(context) - includes_dir = File.join(context.registers[:site].source, '_includes') - - if File.symlink?(includes_dir) - return "Includes directory '#{includes_dir}' cannot be a symlink" - end - - rtn = '' - (context.environments.first['site'][@array_name] || []).each do |file| - if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./ - rtn = rtn + "Include file '#{file}' contains invalid characters or sequences" - end - - Dir.chdir(includes_dir) do - choices = Dir['**/*'].reject { |x| File.symlink?(x) } - if choices.include?(file) - source = File.read(file) - partial = Liquid::Template.parse(source) - context.stack do - rtn = rtn + partial.render(context) - end - else - rtn = rtn + "Included file '#{file}' not found in _includes directory" - end - end - end - rtn - end - end - -end - -Liquid::Template.register_tag('include_array', Jekyll::IncludeArrayTag) diff --git a/plugins/include_code.rb b/plugins/include_code.rb deleted file mode 100644 index a61d06c..0000000 --- a/plugins/include_code.rb +++ /dev/null @@ -1,71 +0,0 @@ -# Title: Include Code Tag for Jekyll -# Author: Brandon Mathis http://brandonmathis.com -# Description: Import files on your filesystem into any blog post as embedded code snippets with syntax highlighting and a download link. -# Configuration: You can set default import path in _config.yml (defaults to code_dir: downloads/code) -# -# Syntax {% include_code path/to/file %} -# -# Example 1: -# {% include_code javascripts/test.js %} -# -# This will import test.js from source/downloads/code/javascripts/test.js -# and output the contents in a syntax highlighted code block inside a figure, -# with a figcaption listing the file name and download link -# -# Example 2: -# You can also include an optional title for the <figcaption> -# -# {% include_code Example 2 javascripts/test.js %} -# -# will output a figcaption with the title: Example 2 (test.js) -# - -require './plugins/pygments_code' -require './plugins/raw' -require 'pathname' - -module Jekyll - - class IncludeCodeTag < Liquid::Tag - def initialize(tag_name, markup, tokens) - @title = nil - @file = nil - if markup.strip =~ /\s*lang:(\S+)/i - @filetype = $1 - markup = markup.strip.sub(/lang:\S+/i,'') - end - if markup.strip =~ /(.*)?(\s+|^)(\/*\S+)/i - @title = $1 || nil - @file = $3 - end - super - end - - def render(context) - code_dir = (context.registers[:site].config['code_dir'].sub(/^\//,'') || 'downloads/code') - code_path = (Pathname.new(context.registers[:site].source) + code_dir).expand_path - file = code_path + @file - - if File.symlink?(code_path) - return "Code directory '#{code_path}' cannot be a symlink" - end - - unless file.file? - return "File #{file} could not be found" - end - - Dir.chdir(code_path) do - code = file.read - @filetype = file.extname.sub('.','') if @filetype.nil? - title = @title ? "#{@title} (#{file.basename})" : file.basename - url = "/#{code_dir}/#{@file}" - source = "<figure class='code'><figcaption><span>#{title}</span> <a href='#{url}'>download</a></figcaption>\n" - source += "#{HighlightCode::highlight(code, @filetype)}</figure>" - TemplateWrapper::safe_wrap(source) - end - end - end - -end - -Liquid::Template.register_tag('include_code', Jekyll::IncludeCodeTag) diff --git a/plugins/jsfiddle.rb b/plugins/jsfiddle.rb deleted file mode 100644 index 815910e..0000000 --- a/plugins/jsfiddle.rb +++ /dev/null @@ -1,40 +0,0 @@ -# Title: jsFiddle tag for Jekyll -# Author: Brian Arnold (@brianarn) -# Description: -# Given a jsFiddle shortcode, outputs the jsFiddle iframe code. -# Using 'default' will preserve defaults as specified by jsFiddle. -# -# Syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %} -# -# Examples: -# -# Input: {% jsfiddle ccWP7 %} -# Output: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,resources,html,css,result/light/"></iframe> -# -# Input: {% jsfiddle ccWP7 js,html,result %} -# Output: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,html,result/light/"></iframe> -# - -module Jekyll - class JsFiddle < Liquid::Tag - def initialize(tag_name, markup, tokens) - if /(?<fiddle>\w+\/?\d?)(?:\s+(?<sequence>[\w,]+))?(?:\s+(?<skin>\w+))?(?:\s+(?<height>\w+))?(?:\s+(?<width>\w+))?/ =~ markup - @fiddle = fiddle - @sequence = (sequence unless sequence == 'default') || 'js,resources,html,css,result' - @skin = (skin unless skin == 'default') || 'light' - @width = width || '100%' - @height = height || '300px' - end - end - - def render(context) - if @fiddle - "<iframe style=\"width: #{@width}; height: #{@height}\" frameborder=\"0\" seamless=\"seamless\" src=\"http://jsfiddle.net/#{@fiddle}/embedded/#{@sequence}/#{@skin}/\"></iframe>" - else - "Error processing input, expected syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %}" - end - end - end -end - -Liquid::Template.register_tag('jsfiddle', Jekyll::JsFiddle) diff --git a/plugins/octopress_filters.rb b/plugins/octopress_filters.rb deleted file mode 100644 index 967a1b6..0000000 --- a/plugins/octopress_filters.rb +++ /dev/null @@ -1,139 +0,0 @@ -#custom filters for Octopress -require './plugins/backtick_code_block' -require 'octopress-hooks' -require 'jekyll-sitemap' -require 'octopress-date-format' -require './plugins/raw' - -module OctopressFilters - def self.pre_filter(page) - if page.ext.match('html|textile|markdown|md|haml|slim|xml') - input = BacktickCodeBlock::render_code_block(page.content) - page.content = input.gsub /(<figure.+?>.+?<\/figure>)/m do - TemplateWrapper::safe_wrap($1) - end - end - end - def self.post_filter(page) - if page.ext.match('html|textile|markdown|md|haml|slim|xml') - page.output = TemplateWrapper::unwrap(page.output) - end - end - - class PageFilters < Octopress::Hooks::Page - def pre_render(page) - OctopressFilters::pre_filter(page) - end - - def post_render(page) - OctopressFilters::post_filter(page) - end - end - - class PostFilters < Octopress::Hooks::Post - def pre_render(post) - OctopressFilters::pre_filter(post) - end - - def post_render(post) - OctopressFilters::post_filter(post) - end - end -end - - -module OctopressLiquidFilters - - # Used on the blog index to split posts on the <!--more--> marker - def excerpt(input) - if input.index(/<!--\s*more\s*-->/i) - input.split(/<!--\s*more\s*-->/i)[0] - else - input - end - end - - # Checks for excerpts (helpful for template conditionals) - def has_excerpt(input) - input =~ /<!--\s*more\s*-->/i ? true : false - end - - # Summary is used on the Archive pages to return the first block of content from a post. - def summary(input) - if input.index(/\n\n/) - input.split(/\n\n/)[0] - else - input - end - end - - # Extracts raw content DIV from template, used for page description as {{ content }} - # contains complete sub-template code on main page level - def raw_content(input) - /<div class="entry-content">(?<content>[\s\S]*?)<\/div>\s*<(footer|\/article)>/ =~ input - return (content.nil?) ? input : content - end - - # Escapes CDATA sections in post content - def cdata_escape(input) - input.gsub(/<!\[CDATA\[/, '<![CDATA[').gsub(/\]\]>/, ']]>') - end - - # Replaces relative urls with full urls - def expand_urls(input, url='') - url ||= '/' - input.gsub /(\s+(href|src|poster)\s*=\s*["|']{1})(\/[^\/>]{1}[^\"'>]*)/ do - $1+url+$3 - end - end - - # Improved version of Liquid's truncate: - # - Doesn't cut in the middle of a word. - # - Uses typographically correct ellipsis (…) insted of '...' - def truncate(input, length) - if input.length > length && input[0..(length-1)] =~ /(.+)\b.+$/im - $1.strip + ' …' - else - input - end - end - - # Improved version of Liquid's truncatewords: - # - Uses typographically correct ellipsis (…) insted of '...' - def truncatewords(input, length) - truncate = input.split(' ') - if truncate.length > length - truncate[0..length-1].join(' ').strip + ' …' - else - input - end - end - - # Condenses multiple spaces and tabs into a single space - def condense_spaces(input) - input.gsub(/\s{2,}/, ' ') - end - - # Removes trailing forward slash from a string for easily appending url segments - def strip_slash(input) - if input =~ /(.+)\/$|^\/$/ - input = $1 - end - input - end - - # Returns a url without the protocol (http://) - def shorthand_url(input) - input.gsub /(https?:\/\/)(\S+)/ do - $2 - end - end - - # Returns a title cased string based on John Gruber's title case http://daringfireball.net/2008/08/title_case_update - def titlecase(input) - input.titlecase - end - -end -Liquid::Template.register_filter OctopressLiquidFilters - diff --git a/plugins/pullquote.rb b/plugins/pullquote.rb deleted file mode 100644 index 3c65e66..0000000 --- a/plugins/pullquote.rb +++ /dev/null @@ -1,45 +0,0 @@ -# -# Author: Brandon Mathis -# Based on the semantic pullquote technique by Maykel Loomans at http://miekd.com/articles/pull-quotes-with-html5-and-css/ -# -# Outputs a span with a data-pullquote attribute set from the marked pullquote. Example: -# -# {% pullquote %} -# When writing longform posts, I find it helpful to include pullquotes, which help those scanning a post discern whether or not a post is helpful. -# It is important to note, {" pullquotes are merely visual in presentation and should not appear twice in the text. "} That is why it is prefered -# to use a CSS only technique for styling pullquotes. -# {% endpullquote %} -# ...will output... -# <p> -# <span data-pullquote="pullquotes are merely visual in presentation and should not appear twice in the text."> -# When writing longform posts, I find it helpful to include pullquotes, which help those scanning a post discern whether or not a post is helpful. -# It is important to note, pullquotes are merely visual in presentation and should not appear twice in the text. This is why a CSS only approach -# for styling pullquotes is prefered. -# </span> -# </p> -# -# {% pullquote left %} will create a left-aligned pullquote instead. -# -# Note: this plugin now creates pullquotes with the class of pullquote-right by default - -module Jekyll - - class PullquoteTag < Liquid::Block - def initialize(tag_name, markup, tokens) - @align = (markup =~ /left/i) ? "left" : "right" - super - end - - def render(context) - output = super - if output =~ /\{"\s*(.+?)\s*"\}/m - @quote = RubyPants.new($1).to_html - "<span class='pullquote-#{@align}' data-pullquote='#{@quote}'>#{output.gsub(/\{"\s*|\s*"\}/, '')}</span>" - else - return "Surround your pullquote like this {\" text to be quoted \"}" - end - end - end -end - -Liquid::Template.register_tag('pullquote', Jekyll::PullquoteTag) diff --git a/plugins/pygments_code.rb b/plugins/pygments_code.rb deleted file mode 100644 index c0f4de9..0000000 --- a/plugins/pygments_code.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'pygments' -require 'fileutils' -require 'digest/md5' - -PYGMENTS_CACHE_DIR = File.expand_path('../../.pygments-cache', __FILE__) -FileUtils.mkdir_p(PYGMENTS_CACHE_DIR) - -module HighlightCode - def self.highlight(str, lang) - lang = 'ruby' if lang == 'ru' - lang = 'objc' if lang == 'm' - lang = 'perl' if lang == 'pl' - lang = 'yaml' if lang == 'yml' - str = pygments(str, lang).match(/<pre>(.+)<\/pre>/m)[1].to_s.gsub(/ *$/, '') #strip out divs <div class="highlight"> - tableize_code(str, lang) - end - - def self.pygments(code, lang) - if defined?(PYGMENTS_CACHE_DIR) - path = File.join(PYGMENTS_CACHE_DIR, "#{lang}-#{Digest::MD5.hexdigest(code)}.html") - if File.exist?(path) - highlighted_code = File.read(path) - else - begin - highlighted_code = Pygments.highlight(code, :lexer => lang, :formatter => 'html', :options => {:encoding => 'utf-8', :startinline => true}) - rescue MentosError - raise "Pygments can't parse unknown language: #{lang}." - end - File.open(path, 'w') {|f| f.print(highlighted_code) } - end - else - highlighted_code = Pygments.highlight(code, :lexer => lang, :formatter => 'html', :options => {:encoding => 'utf-8', :startinline => true}) - end - highlighted_code - end - def self.tableize_code (str, lang = '') - table = '<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers">' - code = '' - str.lines.each_with_index do |line,index| - table += "<span class='line-number'>#{index+1}</span>\n" - code += "<span class='line'>#{line}</span>" - end - table += "</pre></td><td class='code'><pre><code class='#{lang}'>#{code}</code></pre></td></tr></table></div>" - end -end diff --git a/plugins/raw.rb b/plugins/raw.rb deleted file mode 100644 index e97c945..0000000 --- a/plugins/raw.rb +++ /dev/null @@ -1,40 +0,0 @@ -# Author: Brandon Mathis -# Description: Provides plugins with a method for wrapping and unwrapping input to prevent Markdown and Textile from parsing it. -# Purpose: This is useful for preventing Markdown and Textile from being too aggressive and incorrectly parsing in-line HTML. -module TemplateWrapper - # Wrap input with a <div> - def self.safe_wrap(input) - "<div class='bogus-wrapper'><notextile>#{input}</notextile></div>" - end - # This must be applied after the - def self.unwrap(input) - input.gsub /<div class='bogus-wrapper'><notextile>(.+?)<\/notextile><\/div>/m do - $1 - end - end -end - -# Author: phaer, https://github.com/phaer -# Source: https://gist.github.com/1020852 -# Description: Raw tag for jekyll. Keeps liquid from parsing text betweeen {% raw %} and {% endraw %} - -module Jekyll - class RawTag < Liquid::Block - def parse(tokens) - @nodelist ||= [] - @nodelist.clear - - while token = tokens.shift - if token =~ FullToken - if block_delimiter == $1 - end_tag - return - end - end - @nodelist << token if not token.empty? - end - end - end -end - -Liquid::Template.register_tag('raw', Jekyll::RawTag) diff --git a/plugins/render_partial.rb b/plugins/render_partial.rb deleted file mode 100644 index b6ebfe8..0000000 --- a/plugins/render_partial.rb +++ /dev/null @@ -1,69 +0,0 @@ -# Title: Render Partial Tag for Jekyll -# Author: Brandon Mathis http://brandonmathis.com -# Description: Import files on your filesystem into any blog post and render them inline. -# Note: Paths are relative to the source directory, if you import a file with yaml front matter, the yaml will be stripped out. -# -# Syntax {% render_partial path/to/file %} -# -# Example 1: -# {% render_partial about/_bio.markdown %} -# -# This will import source/about/_bio.markdown and render it inline. -# In this example I used an underscore at the beginning of the filename to prevent Jekyll -# from generating an about/bio.html (Jekyll doesn't convert files beginning with underscores) -# -# Example 2: -# {% render_partial ../README.markdown %} -# -# You can use relative pathnames, to include files outside of the source directory. -# This might be useful if you want to have a page for a project's README without having -# to duplicated the contents -# -# - -require 'pathname' -require './plugins/octopress_filters' - -module Jekyll - - class RenderPartialTag < Liquid::Tag - include OctopressFilters - def initialize(tag_name, markup, tokens) - @file = nil - @raw = false - if markup =~ /^(\S+)\s?(\w+)?/ - @file = $1.strip - @raw = $2 == 'raw' - end - super - end - - def render(context) - file_dir = (context.registers[:site].source || 'source') - file_path = Pathname.new(file_dir).expand_path - file = file_path + @file - - unless file.file? - return "File #{file} could not be found" - end - - Dir.chdir(file_path) do - contents = file.read - if contents =~ /\A-{3}.+[^\A]-{3}\n(.+)/m - contents = $1.lstrip - end - contents = pre_filter(contents) - if @raw - contents - else - partial = Liquid::Template.parse(contents) - context.stack do - partial.render(context) - end - end - end - end - end -end - -Liquid::Template.register_tag('render_partial', Jekyll::RenderPartialTag) diff --git a/plugins/titlecase.rb b/plugins/titlecase.rb deleted file mode 100644 index 7648932..0000000 --- a/plugins/titlecase.rb +++ /dev/null @@ -1,36 +0,0 @@ -class String - def titlecase - small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.) - - x = split(" ").map do |word| - # note: word could contain non-word characters! - # downcase all small_words, capitalize the rest - small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize! - word - end - # capitalize first and last words - x.first.to_s.smart_capitalize! - x.last.to_s.smart_capitalize! - # small words are capitalized after colon, period, exclamation mark, question mark - x.join(" ").gsub(/(:|\.|!|\?)\s?(\W*#{small_words.join("|")}\W*)\s/) { "#{$1} #{$2.smart_capitalize} " } - end - - def titlecase! - replace(titlecase) - end - - def smart_capitalize - # ignore any leading crazy characters and capitalize the first real character - if self =~ /^['"\(\[']*([a-z])/ - i = index($1) - x = self[i,self.length] - # word with capitals and periods mid-word are left alone - self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/ - end - self - end - - def smart_capitalize! - replace(smart_capitalize) - end -end diff --git a/plugins/video_tag.rb b/plugins/video_tag.rb deleted file mode 100644 index 0016e10..0000000 --- a/plugins/video_tag.rb +++ /dev/null @@ -1,62 +0,0 @@ -# Title: Simple Video tag for Jekyll -# Author: Brandon Mathis http://brandonmathis.com -# Description: Easily output MPEG4 HTML5 video with a flash backup. -# -# Syntax {% video url/to/video [width height] [url/to/poster] %} -# -# Example: -# {% video http://site.com/video.mp4 720 480 http://site.com/poster-frame.jpg %} -# -# Output: -# <video width='720' height='480' preload='none' controls poster='http://site.com/poster-frame.jpg'> -# <source src='http://site.com/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'/> -# </video> -# - -module Jekyll - - class VideoTag < Liquid::Tag - @video = nil - @poster = '' - @height = '' - @width = '' - - def initialize(tag_name, markup, tokens) - @videos = markup.scan(/((https?:\/\/|\/)\S+\.(webm|ogv|mp4)\S*)/i).map(&:first).compact - @poster = markup.scan(/((https?:\/\/|\/)\S+\.(png|gif|jpe?g)\S*)/i).map(&:first).compact.first - @sizes = markup.scan(/\s(\d\S+)/i).map(&:first).compact - super - end - - def render(context) - output = super - types = { - '.mp4' => "type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'", - '.ogv' => "type='video/ogg; codecs=theora, vorbis'", - '.webm' => "type='video/webm; codecs=vp8, vorbis'" - } - if @videos.size > 0 - video = "<video #{sizes} preload='metadata' controls #{poster}>" - @videos.each do |v| - video << "<source src='#{v}' #{types[File.extname(v)]}>" - end - video += "</video>" - else - "Error processing input, expected syntax: {% video url/to/video [url/to/video] [url/to/video] [width height] [url/to/poster] %}" - end - end - - def poster - "poster='#{@poster}'" if @poster - end - - def sizes - attrs = "width='#{@sizes[0]}'" if @sizes[0] - attrs += " height='#{@sizes[1]}'" if @sizes[1] - attrs - end - end -end - -Liquid::Template.register_tag('video', Jekyll::VideoTag) - diff --git a/posts/2/index.html b/posts/2/index.html new file mode 100644 index 0000000..934046b --- /dev/null +++ b/posts/2/index.html @@ -0,0 +1,751 @@ + +<!DOCTYPE html> +<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]--> +<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]--> +<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]--> +<head> + <meta charset="utf-8"> + <title>/sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + + +
+ +
+ + +

+
+ Nov 7 + 08 + 23:17 +
+ + + Estado Actual De K3b

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b "sufre" un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es "sólo" la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino.
+ + + + +
+ + +
+ +
+ + +

+
+ Nov 7 + 08 + 20:20 +
+ + + Objetivos Y Mejoras De KDE 4.2

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Puesto que hace mucho que no escribo en este blog (y eso que sabía el compromiso que tengo al separar mi antiguo blog en 2 para no mezclar vida privada y labor informática), me he puesto a mirar la página de techbase de KDE, donde figuran los planes y objetivos con cada versión grande.

Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes "Plasmagik" (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo "VI") en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • "Modo administrador" en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado.
+ + + + +
+ + +
+ +
+ + +

+
+ Oct 31 + 08 + 16:46 +
+ + + QT Creator, ¿un Posible RAD Para QT/KDE?

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator
+ + + + +
+ + +
+ +
+ + +

+
+ Oct 22 + 08 + 11:17 +
+ + + KDE 4.2 "Arreglará" Los Mensajes Emergentes

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
KDE 4.2 tiene pensado salir como estable para finales de enero de 2009 (concretamente, el 27, según su planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el "arreglo" de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide "systray", de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha "plasmizado" para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de "KDE4 no es KDE 4.0" y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html
+ + + + +
+ + +
+ +
+ + +

+
+ Sep 24 + 08 + 22:52 +
+ + + Virtualbox 2.0 También Es QT4

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Si no nos bastaba con que la gente del VLC nos diera la sorpresa de pasar sus widgets a QT4, resulta que VirtualBox, el virtualizador de sistemas operativos, también se pasa a estas librerías para mostrarnos su intefaz.

Aunque la configuración de la red más allá de virtualizar un sistema operativo resulta algo engorrosa, este programa hace auténticas virguerías en conseguir una virtualización casi perfecta (hay muchos artículos que explican cómo ejecutar una aplicación windows en un escritorio linux a través de VirtualBox y RDP) y es altamente recomendable para los que les guste probar distribuciones de linux, o experimentar con SSOO limpios o arreglados según la necesidad.

Puesto que la noticia la he leído en KDE-Hispano y a ellos pertenecen las capturas que he visto, os dejo el enlace para que le echeis un ojo: http://www.kdehispano.es/?q=content/lanzado-virtualbox-20
+ + + + +
+ + +
+ +
+ + +

+
+ Sep 22 + 08 + 23:01 +
+ + + VLC 0.9.2, Con Interfaz QT4

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
A estas alturas no es noticia que el reproductor multimedia VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro "Debian-like" que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con "su" o con "sudo", y que no hay salto de línea):
# echo "deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse" > /etc/apt/sources.list.d/ubuntu.list
# echo "deb http://ppa.launchpad.net/c-korn/ubuntu hardy main" >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y --purge remove vlc-* ; apt-get install -y --force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list ... Ahora vamos a darle un aspecto "más KDE". Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos "todo" (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

+ + + + +
+ + +
+ +
+ + +

+
+ Sep 10 + 08 + 18:48 +
+ + + Vuelta a Debian

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Tras todo este tiempo perteneciendo a la saga de seguidores de kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes "testing", a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución.
+ + + + +
+ + +
+ +
+ + +

+
+ May 1 + 08 + 13:28 +
+ + + KDE 4.1 Ya Tiene Una Alfa

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
La gente de KDE ya tiene disponible su primera alfa de lo que será la versión 4.1 de este entorno gráfico. La principal característica que diferencia esta nueva de la anterior 4.0 es su destino: el usuario final (recordemos que la anterior estaba destinada a desarrolladores para que fueran migrando sus aplicaciones a la nueva rama KDE4). Con esta nueva alfa, tenemos también una novedad: multiplataforma. El más purista (y quisquilloso) podría decirme que eso ya era viable gracias a cygwin, y en cierto modo así es. Sin embargo, cygwin es una capa que instala las aplicaciones que así lo permiten, y KDE 4.1 será completamente nativo. No creo que sea necesario decir que difícilmente se trasladará el escritorio, sino más bien las aplicaciones que sobre él corren. Imaginaos, por ejemplo, la introducción de amaroK en el mundo windows: cuidado Winamp, cuidado iTunes. En el campo del correo electrónico, imaginaos un kmail que fuera válido tanto para empresa como para particulares. En el de mensajería (quitando el famoso pidgin), kopete con su posibilidad de multiprotocolo (MSN, AIM, Yahoo IM, gTalk/Jabber, IRC...). En fin, el lector menos avispado notará que se me está haciendo la boca agua. No es para menos, ya que también es un camino que allana la migración de los usuarios a sistemas abiertos (FreeBSD, OpenSolaris, Linux). Primero se le acostumbra al nuevo conjunto de aplicaciones, se le explica sus bondades y demuestra su utilidad, y poco a poco, cuando se encuentre cómodo, ¡ZAS! En toda la boc... esteee... se le cambia el sistema operativo. Nota para hoygans: chavales, si os aparece una palabra subrayada en rojo ondulado, no significa que el programa la considere importante. Es que está mal escrita. (Ventajas del aspell en todo lo que huele a KDE).
+ + + + +
+ + +
+ +
+ + +

+
+ Jan 3 + 08 + 12:25 +
+ + + KDE 4.0 No Es KDE4

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Hago CopyPaste de un post en kdehispano.org que me ha parecido de lo más acertado en lo que será y lo que no será KDE 4.0:

Como ya digo más abajo, ya hace un año que se hablaba de que KDE 4.0 no iba a ser KDE4. No es cierto que «les ha pillado el toro [...] y que ahora se excusan con lo de sacar el producto a plazos [...] como Akonadi»; hace mucho tiempo que ciertas cosas, como Akonadi, estaban descartadas para KDE 4.0. Aquí mismo en KDEHispano hubo una encuesta que preguntaba qué versión de KDE4 iba a utilizar y una de las respuestas era directamente KDE 4.1, dando por hecho que la versión KDE 4.0 no iba a estar precisamente completa. Pero el asunto no está en discutir si KDE 4.0 está acabado o no, o si lo han sacado deprisa y corriendo o más o menos acorde a sus planes. El asunto es que desde el equipo de KDE (y creo que no sólo desde ahí) se percibe una exagerada expectación ante KDE 4.0, por que el público en general tiende a confundir ambas cosas, y se espera que KDE 4.0 sea la repanocha, cuando lo cierto es que en ciertos ámbitos veremos claramente recortadas las funcionalidades respecto a la última versión de la serie 3.x.


¿Qué temen? Que cuando KDE 4.0 salga a la calle sea públicamente ajusticiado por la parte más «inculta» en asuntos de desarrollo de software de la fauna que puebla el bosque digital que es Internet, es decir, periodistas en busca de sangre sensacionalista, blogueros compulsivos sin visión, comentaristas anónimos y no tan anónimos con la misma falta de visión y más ganas aún de carnaza, y otros chascarristas y descerebrados varios. Y tendrán razón en que KDE 4.0 supone un cierto retroceso en ciertas cosas, tan cierto como que supone un gran avance en otras cosas que están ocultas, en las infraestructuras. Por que estos personajes probablemente no pasarán de echar un rápido vistazo a algún LiveCD, ejecutarán un par de plasmoides y poco más. Y eso será terriblemente injusto.


Por ejemplo, miedo me dan los comentarios que se puedan hacer al respecto de KDE 4.0 en Meneame por parte de los más descerebrados y toda la posible audiencia que pueda leerlos. ¿Y después? Cuando a finales de año salga KDE 4.1 y ya empiece a ser la mencionada repanocha todo el mundo recordará lo malo que (supuestamente) era antes y habrá que vencer una resistencia artificialmente construida en base a esa errónea percepción de la versión 4.0. Así que este tipo de mensajes trata de recordar que las funcionalidades de KDE4 se irán alcanzando según avance el ciclo de vida del software. Desde luego, si luego resulta KDE 4.0 es un desastre habrá que criticarlo sin miramientos, por que ocultar la verdad no sirve de nada y no es desde luego el estilo del mundo del software libre (ocultismos y otras negras artes las dejamos para otros).


En resumen, que hay que tratar de hacer críticas acertadas, con conocimiento de causa. Brevemente: sí, faltarán cosas; sí, estábamos avisados, sí, probablemente pretendían tener más cosas listas; sí, tienen miedo a la reacción de la «crítica rápida superficial» típica de Internet y, por último, creo que se debe simplificar el asunto a «van retrasados y dan excusas».[...]


Y es que la crítica fácil es demasiado... eso, fácil, como para dejarla escapar. Nos encanta desmerecer el trabajo ajeno sin tener ni zorra idea de lo que se ha trabajado en él. Así que, señores fanboys, aparte de las flechas, vayan preparando escudos. No pienso quedarme de brazos cruzados mientras intentan desmembrar el trabajo DESINTERESADO de un grupo de personas que, con cada versión, acercan el software libre al usuario de a pie por un lado, y simplifican la tarea de desarrollo por otro.


El que avisa no es traidor.
+ + + + +
+ + +
+ +
+ + +

+
+ Nov 30 + 07 + 12:24 +
+ + + Lo Que Nos Traerá Kubuntu Hardy

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Me ha dado por leerme los blueprints para Hardy, que viene a ser la lista de cosas que les gustaría tener implementadas para esta nueva versión de Kubuntu. Como usuario de KDE que soy, voy a centrarme en lo que nos quieren traer y que afecte a nuestro K-Escritorio.

  • Autenticación con Dominios Windows. Esto tal vez no sea útil para los usuarios convencionales (aka Home/Desktop-users), pero sí para entornos de trabajo. Imaginaos la de programas que hay que utilizan autenticación LDAP o de Active Directory. Imaginaos ahora que un usuario de ubuntu tuviera que andar "enguarrándose" con usuario y contraseña POR APLICACIÓN. Y peor aún, imaginaos a un usuario cuyo administrador de sistemas (que es su labor) cambia las contraseñas cada X tiempo. ¿Entendéis lo útil que puede llegar a ser?

  • Continúa la integración con KDE 4. Aunque hardy no lo traerá por defecto (pensad que es una LTS y quieren estar muy MUY seguros de que todo va a ir como la seda), se van integrando elementos del futuro KDE 4 en Kubuntu. Se usará la estructura de empaquetación de Debian, pero sustituyendo todo aquello que indique kde por kde4, para que coexistan ambos escritorios de manera temporal. Así, en vez de kdebase, por ejemplo, el paquete se llamaría kde4base, se instalará en /usr/lib/kde4, etc.

  • Hacer lo mismo que hace Ubuntu. Puede parecer una chorrada, y bastante mal me parece que tengan que planteárselo como propósito en vez de ser algo inherente, pero aquí está. Quieren que Kubuntu tenga las mismas funcionalidades de Ubuntu. ¿Ninguno se ha tomado Kubuntu Gutsy como un Ubuntu Feisty con paquetes actualizados? Se debe a la preferencia (y cantidad de gente) que se da al escritorio con Gnome. Parece que se van a poner las pilas y ofrecer módulos de configuración de compiz en ksystemsettings (el pseudo-sustituto de kcontrol), instalación automática de impresoras (como ya hace Ubuntu Gutsy), instalación automática de códecs en kaffeine, etc. Para mantener coherencia con KDE 4, usarán PyQT4.


El resto de características en blueprints (44 a fecha de hoy) tienen una influencia mayor en Gnome o en el futuro GoBuntu, Ubuntu optimizado para su virtualización.
+ + + + +
+ + +
+ + +
+
+

+ Copyleft 2015 - David PG - + Powered by Octopress +

+ +
+ + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/posts/3/index.html b/posts/3/index.html new file mode 100644 index 0000000..6a7675a --- /dev/null +++ b/posts/3/index.html @@ -0,0 +1,751 @@ + + + + + + + + /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + + +
+ +
+ + +

+
+ Oct 24 + 07 + 13:24 +
+ + + Los Drivers De ATI Listos Para Su Uso Con Compiz

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Veo en menéame que ya hay disponible un driver de ATI compatible con Compiz sin necesidad de Xgl (vamos, que por fin los usuarios de ATI pueden hacer las cosas como el resto de los mortales). Enlaza a una página alemana, con instrucciones en inglés: http://forlong.blogage.de/article/2007/10/23/fglrx-8423---finally-with-AIGLX-support# Hago aquí la traducción para el que quiera hacerle uso:

  1. Eliminar Xgl, si está instalado: sudo apt-get remove xserver-xgl

  2. Eliminar el antiguo controlador, si está instalado: sudo apt-get remove xorg-driver-fglrx

  3. Eliminar los antiguos .deb de fglrx: sudo rm -f /usr/src/fglrx-kernel*.deb

  4. Agregar en la lista negra el antiguo módulo fglrx sudo gedit /etc/default/linux-restricted-modules-common DISABLED_MODULES="fglrx"

  5. Alternativamente, elimina el paquete linux-restricted-modules-* de tu kernel, a menos que uses un chip Atheros. Puede que necesites reiniciar.

  6. Descarga el instalador a tu carpeta personal: wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run

  7. Instala los paquetes necesarios: sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic

  8. Crea e instala el paquete .deb: bash ./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb

  9. Compila el módulo del kernel: sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod

  10. Configura el controlador: sudo gedit /etc/X11/xorg.conf

  11. Asegúrate que, en la sección "Device", está puesto el driver "fglrx". Y, si existiera alguna de estas líneas, eliminarla: Section "Extensions" Option "Composite" "0" # or "Disable" EndSection Section "ServerFlags" Option "AIGLX" "off" EndSection

  12. Reiniciar

  13. mkdir -p ~/.config/compiz && echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager .Esto creará un archivo en tu carpeta personal, que asegurará que Compiz se ejecute sin el prefijo anterior.


Y ahora, el .sh para los gandules: #! /bin/bash # Script para la instalación del driver ATI sudo apt-get remove xserver-xgl sudo apt-get remove xorg-driver-fglrx sudo rm -f /usr/src/fglrx-kernel*.deb sudo echo 'DISABLED_MODULES="fglrx"' >> /etc/default/linux-restricted-modules-common wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic bash ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod mkdir -p ~/.config/compiz echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager # #Fin. Recordar cambiar el driver en /etc/X11/xorg.conf y asegurarse de que esté activado Composite y AIGLX # El script puede dar errores en apt-get si ya hay instalados paquetes o ya están eliminados.
+ + + + +
+ + +
+ +
+ + +

+
+ Apr 10 + 07 + 13:23 +
+ + + Kubuntu 7.0 (Gutsy Gibbon) Tribe 4 Disponible

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Tal y como se encuentra kubuntu-es, que parece que no levanta cabeza con el tema del hosting (*suspiro*), voy a dar la noticia en mi blog, porque hay novedades que considero interesantes:

  • Nuevo administrador de controladores restrictivos. ¿Que qué es esto? Bueno, primero explicaré un poquito la cosa. Muchas empresas, al tener que investigar sobre Sistemas Operativos de código cerrado el cómo funcionarán sus dispositivos, gastan una buena cantidad de pasta en programadores y licencias de uso. Para cuando el producto funciona lo suficientemente bien como para sacarlo al mercado, la inversión ha sido tal y los acuerdos con dichos creadores de sistema tan súmamente restrictivos, que los fabricantes se encuentran o bien sin efectivos, o bien imposibilitados por contrato, o bien porque en realidad se la suda completamente. Para esto último, desgraciadamente, no hay solución. Para el primero y el segundo, una posibilidad (que afortunadamente se acepta más) es liberar el código y que "los frikis de linux" se curren un controlador. Y luego la que hace por ejemplo nvidia, que es proporcionar drivers para el sistema, aunque cerrados. Para esto último es para lo que sirve este administrador de controladres restrictivos. Dado que la licencia de libre distribución de Ubuntu choca con la "no-libre" distribución de algunos controladores (como el ejemplo de nvidia), se utiliza este gestor para que el usuario pueda descargarlos e instalarlos cómodamente y sin necesidad de usar la malquerida consola (no sé yo qué tirria le tiene la gente, cuando no hay nada más rápido y efectivo).

  • Se instala la biblioteca QT 4.3.1, con código optimizado para máquinas nuevas

  • Edubuntu, la distribución dedicada a la educación, también estará disponible con KDE como escritorio

  • Actualización de 7.04 (Feisty) a 7.10 (Gusty) a través de adept. ¡Adiós otra vez a la consola! Si tienes instalado feisty, ejecuta (Alt+F2) kdesu "adept_manager --version-upgrade". Si ya tienes instalado gutsy y quieres actualizar, ejecuta (Alt+F2)kdesu "adept_manager --dist-upgrade-devel"

  • KMail ya viene instalado con herramientas GPG activadas. GPG es un conjunto de encriptación/desencriptación de datos que permite que el correo electrónico lo tenga que leer su destinatario y nadie más

  • ¡¡ KDE 4 beta 1 !! Paquetes disponibles e integrados en el sistema de lo que será el futuro KDE 4. No hay actualmente muchas aplicaciones que funcionen sobre él, dado su estado beta y que estamos hablando de una "major release", que es como decir pasarse de NT a 2000 (no, no digo de XP a Vista porque eso es pasarse, pero con la máquina).

  • OpenOffice 2.3, la suite ofimática libre más famosa y usada. Aún se encuentra en estado de desarrollo, pero los chicos de ubuntu han creado binarios para que podamos ir saboreando las nuevas características de esta completa suite.


Si a esto le juntamos la novedad de un front-end (programa visual, con ventanitas y botoncitos) para gdebi, el instalador de paquetes ".deb" de manera local (apt lo hace de manera remota), tendremos una distribución más orientada al usuario final, menos dependiente de la consola, consistente y que separa el código libre y el cerrado. Kubuntu va por buen camino, pero ojalá no tuviera que ceñirse al "Release Plan" de Ubuntu. Me gustaría ver una Gutsy con un definitivo KDE 4, aunque tuviera que esperar a finales de octubre / primeros de noviembre para ello. Bueno, eso y que son 10 desarrolladores a tiempo parcial (menos John Riddell, que es a tiempo completo) frente al < exageración > ejército < /exageración > que tiene montado ubuntu. Capturas de pantalla, anuncio y fuente original: https://wiki.kubuntu.org/GutsyGibbon/Tribe4/Kubuntu
+ + + + +
+ + +
+ +
+ + +

+
+ Jun 7 + 06 + 13:22 +
+ + + Iconos Oxygen en KDE 3.5.x

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Los usuarios de PCs que siguen noticias de linux saben que se aproxima un cambio evolutivo en el sistema de escritorio KDE. En su versión 4.0, este entorno proporcionará una mayor coherencia entre sus componentes visuales (Plasma), auditivos (Phonon/decibel) y de control de hardware (Solid), de manera que tendremos que preocuparnos menos de configuraciones y más de hacer un entorno a nuestro gusto y medida. Entre los cambios visuales que traerá consigo se encuentra el juego de iconos Oxygen, de alta calidad y que han seguido un estudio de usabilidad para hacernos más fácil saber qué tipo de archivo estamos tratando según su icono asociado. Pero, ¿tenemos que esperar a KDE 4? ¡Pues no! No necesariamente, vaya. Con un par de arreglos podemos tener los iconos de oxygen listos para el uso y deleite cotidiano en nuestro actual KDE. Vamos por partes:

  1. Ten instalado el paquete subversion. No es necesario realmente, pero si te gusta ir viendo los cambios y añadidos que van implementando los iconos, es muy recomendable.

  2. Instala también el paquete kde-icons-nuovext. Luego entenderás por qué.

  3. Copia la carpeta /usr/share/icons/hicolor a tu carpeta $HOME/.kde/share/icons/ . Todos los conjuntos iconos tienen una propiedad (se ve en el index.theme de la carpeta del conjunto) que hacen que hereden del conjunto hicolor. Así que, tratándose de versiones SVN (ergo, incompletas) de iconos, vamos a dar antes un poco de coherencia al conjunto

  4. Ahora, copia el contenido de /usr/share/icons/crsytalsvg a $HOME/.kde/share/icons/hicolor, esto es, cp -R /usr/share/icons/crystalsvg/* $HOME/.kde/share/icons/hicolor/. Esto sobreescribirá los antiguos iconos hicolor por crystal, bastante más vistosos.

  5. Ahora viene nuovext. Realiza el mismo paso anterior, esto es, cp -R /usr/share/icons/nuovext/* $HOME/.kde/share/icons/hicolor/. Los iconos nuovext se parecen mucho más a los futuros oxygen que los de crystal.

  6. Copia únicamente el archivo /usr/share/icons/hicolor/index.theme en la carpeta $HOME/.kde/share/icons/hicolor

  7. Explico estos cuatro pasos anteriores como capas de una imagen: Primero establecemos la base o "fondo" a partir del estándar, hicolor. No obstante, esta base está bastante obsoleta y la actualizamos con crystal, que sería la primera capa. Esto nos daría realmente el mismo resultado que tener el juego de iconos crystal por defecto, dada la herencia que antes he mencionado con hicolor. Pero como crystal difiere del objetivo final, añadimos una capa más (nuovext) que tiene un mayor parecido. Visualmente ya estaría, pero para que oxygen crea que este conjunto de iconos es el hicolor (del cual heredará todos los iconos que él no tenga), tenemos que hacérselo creer, y es por eso que copiamos el archivo index.theme

  8. Sólo queda descargar el archivo oxygen.tar.bz2 (¡¡CUIDADO!! SON 82MB DE DESCARGA) y descomprimirlo en $HOME/.kde/share/icons mediante tar -xjvf oxygen.tar.bz2. Esto ya SI es el conjunto oxygen del futuro KDE 4.

  9. Bien, doy por sentado que sabeis cambiar el conjunto de iconos. Yo lo hago desde kcontrol porque no me convence ksystemsettings, pero tanto con uno como con otro resulta bastante fácil.


Listo, ya teneis el futuro oxygen para vuestro disfrute personal. Ahora, si queréis que se reflejen los cambios que van haciendo a los iconos, abrís una consola, entrais en $HOME/.kde/share/icons/oxygen y tecleais svn update, que actualizará los iconos a la última versión del SVN.
+ + + + +
+ + +
+ +
+ + +

+
+ May 17 + 06 + 13:21 +
+ + + Kreo K Hestoi Listo Xa Canviar a Linus

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Vale. Has pensado, tras constantes comidas de cabeza de tus amigos frikis, que linux es lo que necesitas para que "nadie te robe los archivos" ni se te ponga "malito" el ordenador a causa de los virus "que son mú malos". Te han hablado maravillas y que Linux puede parecerse (visualmente) a Windows todo lo que tú quieras, y que hay programas análogos a todos los que en él tienes para que no tengas excusas. Bien. Ahora me toca a mí. No me queda más remedio que darte un par de avisos acerca de lo que linux NO puede hacer hoy por hoy:

  • Cuando compras un juego (y eso es culpa del fabricante), aunque ponga PC-CDROM, puede NO funcionar con linux. ¿Por qué? Porque donde dice "PC" debería decir "Win". Así de mal. Y debería haber etiquetas según el sistema. Por ejemplo: logo de windows + CDROM; pingüino + CDROM; Manzanita mordida + CDROM. Así queda muy, pero muy claro, para qué plataforma está soportado ese juego. ¿O es que no hacen lo mismo con Xbox-360 y PS2 (por poner un ejemplo)?

  • El software específico de tu empresa puede NO funcionar. Si eres programador de centralitas, o quieres el Contapús Sibarita Gañán, tal vez necesites un equipo con la plataforma para la que fue creado.

  • Si no sabes escribir como $DIOS manda, no quiero que uses linux. Muchos de la comunidad no queremos que uses linux. Vuélvete al sueño de Matrix y déjanos tranquilos.

  • Deja de pensar en descargarte un "setup.exe". Esto es un sistema DIS-TIN-TO. Los basados en debian usarán una herramienta; los basados en Red Hat, otra. Pero no (repito-NO) hay un setup.exe .


Y ahora que te he devuelto a la realidad, y si sigues pensando que quieres linux, te recomiendo algo de hardware:

  • Que esté basado en 64bits. ¿Por qué? Porque los 32 tienden a su extinción. AMD64, Core2Duo... el que tú quieras, pero 64 bits. La velocidad es indistinta, siempre que cumplan ese requisito.

  • Tarjeta nVidia, hasta que AMD/ATI cumpla y proporcione drivers de calidad. No te puedes imaginar la cantidad de comentarios en los foros acerca de los problemas de instalación de los drivers de ATI.

  • 1 GB de RAM. Así te lo suelto. Sí, linux puede ir con menos, pero para hacerlo parecido a Windows/MacOSX vas a necesitar algo más que intenciones.

  • Dedicar 10 GB de tu disco duro al sistema. El resto, todo lo grande que tú quieras. Es más, si puedes, un disco lo más pequeño del mercado y otro todo lo grandote que puedas. Uno, sistema operativo. El otro, tu morralla. Ya sé que Windows se instala en menos de 2 GB, pero no te viene con Ófis ni cortafuegos (no, no considero cortafuegos a la porquería del SP2) ni antivirus ni editor de fotos ni... ¡ah! ¡que sí que te viene! pues eso es porque el que te ha vendido el equipo está haciendo una instalación ILEGAL de software


Esta lista está sujeta a modificación y/o crítica constructiva, toda ayuda es naturalmente bienvenida.
+ + + + +
+ + +
+ +
+ + +

+
+ Mar 7 + 06 + 12:21 +
+ + + 28 Pautas Para Reforzar Tu Servidor Linux

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Traducción libre de http://kevin.hatfieldfamilysite.com/?p=147:

1. En tu cortafuegos (tienes uno, ¿verdad?) confirma que el puerto MySQL para entrantes es el 3306 y ciérralo. Si este puerto se queda abierto se expone tanto a un abuso de servicio y una amenaza de seguridad ya que no sólo los hackers pueden irrumpir en MySQL, sino que cualquier usuario puede almacenar su base SQL en tu servidor y acceder desde cualquier equipo, y así (ab)usar los recursos de tu servidor.

2. Chequea los permisos de /tmp. Deberían estar en chmod 1777

3. Chequea el propietario de /tmp. Debería pertenecer a root:root

4. Chequea /etc/cron.daily/logrotate. Debido a un bug en logrotate, si se monta /tmp con la opción noexec, necesitas que logrotate use un directorio temporal diferente. Si no lo haces, este syslog puede no reiniciarse correctamente y escribirá sobre archivos antiguos/incorrectos.

5. Chequea los permisos de /var/tmp. Debería estar en chmod 1777

6. Chequea el propietario de /var/tmp. Debería pertenecer a root:root

7. Chequea que /var/tmp está montado como sistema de archivos. No debería estar enlazado (ln -s) a /tmp o montado como un sistema de archivos.

8. Chequea que /var/tmp está montado con noexec,nosuid. Normalmente no tiene estas opciones, con lo que deberías considerar agregar un punto de montaje en /etc/fstab con esas opciones.

9. Chequea los permisos de /usr/tmp. Deberia estar en chmod 1777

10. Chequea el propietario de /usr/tmp. Deberia pertenecer a root:root

11. Chequea que /usr/tmp está montado como sistema de archivos o es un enlace simbólico (ln -s) de /tmp.

12. Chequea /etc/resolv.conf . No deberías especificar como nombre de servidor (nameserver) a 127.0.0.1 o a localhost. Usa la IP principal de los servidores en su lugar. Chequea 12b. Chequea /etc/named.conf por las restricciones de recursividad . Si tienes un servidor DNS local ejecutándose pero no tienes restricciones de recursividad establecidas, es un riesgo de seguridad y de rendimiento tan buenos como ataques DDoS contra tu sistema, con lo que deberías establecerlo sólo para las direcciones IP locales.

13. Chequea el runlevel del servidor. Para un entorno seguro deberías ejecutar el servidor sólo a nivel 3. Puedes solucinarlo editando /etc/inittab y cambiando la linea de "initdefault" a como sigue: id:3:initdefault y luego reiniciar el servidor.

14. Chequea el cron del usuario "nobody". Tienes un registro de nobody que deberías chequear si no ha sido creado por un exploit.

15. Chequea el soporte del Sistema Operativo. Asegírante que tu versión aún tiene soporte del fabricante y que las actualizaciones aún siguen disponibles.

16. Chequea si SSHv1 está desactivado. Deberías, editando /etc/ssh/sshd:config y configurando: Protocol 2 (eliminando la almohadilla del principio de linea y editando donde pone "1.1")

17. Chequea si SSH está en un puerto no-estándar. Mover SSH a un puerto no-estándar evita escaneos básicos de puertos SSH. Edita /etc/ssh/sshd_config y configura Port nnnn, donde nnnn es un puerto a tu elección. ¡No olvides abrir el puerto en el cortafuegos antes!

18. Chequea en SSH "PasswordAuthentication". Para la seguridad definitiva de SSH, puedes considerar desactivar esta opción y permitir acceso sólo usando "PubKeyAuthentication".

19. Chequea que el puerto 23 de telnet no está en uso. Cierra este puerto en tu cortafuegos. Telnet es un protocolo inseguro y deberías desactivar el servicio telnet si está ejecutándose.

20. Chequea los límites de recursos de la shell. Deberías activarlos para prevenir que los usuarios de shell consuman recursos de servidor (exploits de DoS, mayormente). Si estás usando cPanel/WHM activa "Shell Fork Bomb Protection".

21. Desactiva todas las instancias de IRC - BitchX, bnc, eggdrop, sniffers genéricos, servicios guardianes, ircd, psyBNC, ptlink. Si estás usando WHM puedes hacerlo en "Background Process Killer".

22. Chequea el modulo mod_security en apache. Debería estar instalado.

23. Chequea el modulo mod_evasive en apache- Deberías instalarlo desde el código fuente para evitar ataques DoS contra apache. Cuidado porque este módulo se carga la funcionalidad de FrontPage.

24. Chequea el valor RLimitCPU de apache. Deberías establecer un valor para evitar scripts que consuman recursos de servidor (exploits de DoS).

25. Igualmente para el valor RLimitMEM.

26. Chequea el valor de enable_dl en php. Deberías modificar /usr/local/lib/php.ini y configurar enable_dl = off. Esto previene a los usuarios de ejecutar modulos php que afecten a cualquiera en el servidor. Nota que si se usan librerías dinámicas, como ioncube, deberás cargarlas directamente en php.ini

27. Chequea el valor de disable_functions en php. Deberías modificar /usr/local/lib/php.ini y desactivar las funciones más comúnmente atacadas. Por ejemplo:disable_functions = show_resource, system, shell_exec, passthru, exec, phpinfo, popen, proc_open. Algunos scripts de clientes web pueden fallar con algunas de estas funciones desactivadas, así que tendrás que quitarlas de esta lista.

28. Chequea phpsuexec. Para reducir el riesgo de que hackers accedan a todos los sitios del servidor desde un script web, deberías activar phpsuexec cuando construyes apache/php. Nota que hay efectos laterales cuando se activa phpsuexec en un servidor y debes tenerlos en cuenta antes de activarlos.
+ + + + +
+ + +
+ +
+ + +

+
+ Jan 16 + 06 + 12:15 +
+ + + Instalador De Ubuntu Para Windows

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¿Tienes un equipo con Windows instalado? ¿Quieres
instalar linux, pero te parece demasiado complicado?
Pues no hay problema. Los chicos de Ubuntu ya se han puesto manos a la
obra, y tienen en marcha el proyecto "install.exe", que es, ni más ni
menos, un instalador de X/K/Ubuntu para Windows.
El programa se encuentra en una fase muy verde, pero ya contiene unas
cuantas capturas de pantalla, gracias a las cuales podemos apreciar que
la instalación será muy, pero que muy sencilla, y que además mantendrá
intactos los datos de nuestra partición windows.
https://wiki.kubuntu.org/install.exe/PrototypeExisten
dos maneras para instalarlo: mediante el instalador (el cual nos
recordará un poco a la manera que tiene Internet Explorer en
instalarlse) que ocupa unos 1.5MB y que va descargando los archivos
necesarios, o un archivo único con todo lo necesario para su
instalación desde Windows, descargable mediante .torrent .
+ + + + +
+ + +
+ +
+ + +

+
+ Dec 1 + 05 + 12:14 +
+ + + La "Innovación" De Microsoft

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
A través de un enlace de menéame, veo un resumen de algunas de las "innovaciones" que Microsoft se suele pegar como propias. El artículo es algo extenso, así que voy a traducir únicamente el resúmen de cada párrafo:

  • DOS : Comprado a Seattle Computers en 1980

  • Compilador C: licencia de Lattic en 198?

  • Flight Simulator: licencia de BAO en 1982 y luego adquirido junto con BAO en 1995

  • Windows: GUI licenciada por Apple en 1985

  • Powerpoint: Adquirido con la compra de Forethought en 1987

  • Windows NT: basado en propiedad intelectual robada de Digital en 1988

  • Sistema de Archivos Comunes en Internet: Copia del protocolo SMB de IBM

  • Pila TCP/IP: licenciado por Spider Software en 19??

  • MS-RPC: copia del DCE-RPC de Apollo por uno de sus fundadores en 198?

  • Visual Basic: comprado como Ruby de Alan Cooper en 1988

  • SQL Server: licencia de Ashton-Tate en 1989

  • TrueType: licencia de Apple en 1991

  • Internet Explorer: licencia de Spyglass en 1994

  • DirectX: adquirido con la compra de Rendermorphics en 1995

  • Frontpage: comprado de Vermeer en 1996

  • Librerías C++ estándar: licencia de Dinkumware en 1996

  • Tecnología óptica de tracking de Intellimouse Explorer: licencia de Agilent en 1998


Microsoft ha hecho mucho por y para los usuarios de ordenadores... Sí, claro, lo mismo que Sauron en la Tierra Media con el Anillo Único, no te jode...
+ + + + +
+ + +
+ +
+ + +

+
+ Nov 29 + 05 + 12:14 +
+ + + Una Semana

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Es el período de transición que ha puesto rouzic para que kubuntu-es vuelva a estar en marcha. Tiene realizadas dos de las secciones, y sigue limpiando morralla de los foros. Y es que hay mucha gente que se sigue pasando por el forro de los cojones (sí, aquí me puedo y me pienso permitir el uso de palabras malsonantes) leerse las normas del foro, leerse las secciones disponibles, leerse un libro cada X tiempo para recordar normas tan simples como "a ver"="veamos", "haber"="verbo equivalente a existir". Así que ánimo, que son pocos y cobardes. Los que estamos a la espera del Gran Resurgimiento tenemos el aspell (corrector ortográfico) en mano y el turbante de talibán otrográfico listos para la santa cruzada XD . ¡Ah! Muchísimas gracias a todos los que estáis mandando comentarios a mi blog, aún sin tener necesidad, tanto si es de felicitación como si es de ponerme a caldo. Antes de que alguno lo piense, respondo: no, el blog no surgió después de kubuntu-es y no, no comenté con nadie que yo fuera a informar acerca del estado de la web y que por ello se enlazara a mi blog. De hecho, se enlazó sin mi conocimiento y se me ha puesto como tarea. No me molesta hacerlo, naturalmente (si me molestara, dejaría incluso de ser admin de kubuntu-es), pero que nadie crea que ésta es una manera de promocionarme. Es más, me gustaría que la afluencia de gente que ve este blog subiera sólo porque le gusta leerme cada vez que escribo alguna cosa mía, no porque sea la única manera de saber qué se cuece tras las bambalinas de kubuntu-es (lo que me recuerda que tengo que preguntarle a patrick cada cuánto se actualiza el planet).
+ + + + +
+ + +
+ +
+ + +

+
+ Nov 27 + 05 + 12:13 +
+ + + Kubuntu-es en Obras

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Poco nos dura la estabilidad en Kubuntu-ES. Primero hemos pasado el host de albianlinux a Canonical, y ya he tenido problemas: como el de AL era MySQL 4.0, no había manera de guardar la codificación de las filas ni las tablas, con el consecuente fallo de acentos. Afortunadamente, he podido retocar el archivo de texto y volver a mandarlo vía PHPmyadmin para que todo esté como tiene que estar. Y ahora, a falta de no tener aún el dominio kubuntu-es.org asociado correctamente, tenemos el cierre de la página. Espero que rouzic no tarde demasiado, mayormente por los que vienen detrás. No entiendo muy bien por qué la política/manía que tiene de separar las secciones en distintos drupal, yo lo veo más problema que ayuda a la hora de gestionar la base de datos, pero ya se verá. En fin, supongo que pienso esto porque la página es ya como mi niña pequeña y quiero lo mejor para ella.
+ + + + +
+ + +
+ +
+ + +

+
+ Oct 22 + 05 + 13:13 +
+ + + Edgy RC1

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Bueeeeno, afortunadamente han arreglado cositas. Ya vuelvo a tener mldonkey (bieeeeen), y ya funciona el arranque gráfico (más "bieeeeen"). Parece estable. Por lo menos tengo los paquetes actualizados (su dolor de cabeza costó) y ya no me tengo que preocupar hasta pasados 6 meses. Aunque bueno, ahora que el SATA es el único disco duro, me espero fijo-fijo a que Feisty Fawn sea estable. Espero... xD
+ + + + +
+ + +
+ + +
+
+

+ Copyleft 2015 - David PG - + Powered by Octopress +

+ +
+ + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/posts/4/index.html b/posts/4/index.html new file mode 100644 index 0000000..aadb96c --- /dev/null +++ b/posts/4/index.html @@ -0,0 +1,709 @@ + + + + + + + + /sys/admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

/sys/admin

+ +

Blog de/para sysadmins, devops y fans de GNU/Linux

+ +
+ +
+ +
+
+
+ + + +
+ +
+ + +

+
+ Oct 19 + 05 + 13:13 +
+ + + De Primeras Con Edgy

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
El mezclote SATA-IDE en mi ordenador me está trayendo de cabeza: cuando tengo que hacer un reinicio (normal en un sistema linux/xp), me toca apagar el equipo, DESENCHUFARLO y esperar de 10 a 15 min a que libere los condensadores. ¿Por qué? Porque si no, el disco IDE no se enciende. Y puesto que dapper no permite inicio en discos SATA con GRUB, tenía que dejarlo ahí. Vale, pues el disco IDE, que tan por saco me ha dado, acaba de ser eliminado de mi torre. Tenía ya una partición hecha y pensada para NTFS y el futuro Windows Vista, así que le daré uso. Instalar el XP me trae recuerdos... ains... xD Instalar edgy con el CD alternate es más cómodo que antes. Aunque se creyera que mi teclado era francés, no hubo problema para corregirle del error. Particionado: ¡Primer fallo! No me deja formatear en XFS, pero sí en Reiser y ext3. Este último siempre me ha fallado por inconsistencia, y aunque tenga los datos en ese sistema de archivos (gracias a IFS for Windows puedo usar la partición), el sistema estará en Reiser (qué remedio). Instalación: pues como siempre, aunque podría decir que hasta ha sido más lenta que de costumbre. Ahora sería cosa de probar la instalación desde LiveCD, a ver qué tan rápido arranca (se supone que han mejorado la velocidad y tal). Arranque: bueno, me esperaba un arranque de grub bonito, pero no. Todo modo texto. Eso sí, rápido de cojones. En mucho menos que lo que dapper, ya tengo mi escritorio disponible para el uso cotidiano. Post-Instalación: en fin, qué voy a decir. Que no llueve a gusto de todos. Actualizar paquetes, instalar nvidia, controladores propietarios multimedia, kdeutils, kdemultimedia (me gusta usar la previsualización en konqueror). Vaporware: otra vez al chroot. Joer, y menos mal que decían que iban a jugar con esa característica. Pues ni simbiosis amd64/i386, ni pruebas con smart (administrador de paquetes y gestor de dependencias), ni xgl (beryl) instalado por defecto. Todo a golpe de apt-get, sí, pero incómodo. Fallos: coño! han arreglado el script de instalación de mldonkey-server... para que luego el Kmldonkey no conecte! xD En serio, creo que hay un problema de conexión o permisos con los puertos, porque el aMule no funciona tampoco en modo local (amule-utils) para pasarle los parámetros por consola. Por lo demás, pues bien. No va más rápido, pero tampoco va más lento. He actualizado paquetes y listos. Vamos, que si dapper me dejara instalar GRUB en mi disco SATA, podría haberme esperado perfectamente a la versión estable de edgy, o incluso a edgy+1 si ésta mejorara lo actual. Recomendación final: actualízate a edgy cuando sea estable... y le apliquen un parche xD
+ + + + +
+ + +
+ +
+ + +

+
+ Sep 13 + 05 + 13:12 +
+ + + Acelerando Que Es Xgerundio

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
XGL ha supuesto una revolución en el modo de tratar los gráficos (animados o no) en el mundo Linux. A pesar de que en todo momento Novell dio la advertencia de ser una beta, todos queremos tener un servidor XGL en nuestra máquina... incluso en detrimento de lo que les pudiera pasar a aplicaciones no compatibles. Cedega, por ejemplo, es una de ellas. No es capaz de funcionar a pantalla completa, según muchos foros. No comentan nada de modo ventana, pero un "mata-mata" tipo "Half-Life" en modo ventana tiene que ser un poco incómodo. En otro blog (no pongo enlaces porque no os imaginais la cantidad de páginas que visito al día), éste en inglés, hablan de AIGLX, una implementación RedHat/Fedora para X.org, que hace más transitivo el paso a la aceleración 3D sin la pérdida de compatibilidad con los binarios actuales. Éste, por ejemplo, será el método que utilizará Edgy, en lugar del XGL que prometieron cuando hablaron de los planes de esta versión. Por mi parte, creo que es más correcto el uso de AIGLX. ¿Por qué? Porque los desarrolladores que no actualizan con frecuencia o que no ven útil que su programa tenga código basado en OpenGL porque utiliza 2D puro y duro pueden seguir utilizando el método clásico, mientras que los desarrolladores de algunos videojuegos, reproductores multimedia, etc, que sí pueden beneficiarse de OpenGL, pueden hacerlo tranquilamente sin temor a tener que reimplementar sus programas según si se basan en el servidor X.org, XGLX (el nombre "formal" del XGL de Novell) o lo siguiente que salga con vete a saber tú qué nombre. Otro factor del mal uso de XGLX es la dependencia TAN elevada de los controladores de la tarjeta gráfica: actualmente quien tiene una ATI lo pasa fatal para hacerlo funcionar (por culpa de ATI, ni más ni menos, cuyas actualizaciones de controladores pasan perfectamente del mes al año, en lo que a usuarios de Linux se refiere). Sin embargo, con los controladores propietarios de nVidia no hay problema ninguno. Glucose viene a ser el término medio. Es decir, una aplicación (basada en QT) que esté en 2D pero quiera ser dibujada por el motor OpenGL de la tarjeta gráfica (lo que conlleva el aligeramiento de peso en el microprocesador) puede hacerlo gracias a un GlucoseInit y la implementación adecuada. Resumiendo: lo ideal para una transición suave entre el actual modelo de X.org y las futuras y venideras implementaciones para un escritorio "acelerado" es actualmente (y mira tú lo bien que nos viene) el modelo que tanto Fedora como Ubuntu están realizando: X.org 7.1 + AIGLX + Glucose. Aunque para Glucose supongo que habrá que esperar a Edgy+1...
+ + + + +
+ + +
+ +
+ + +

+
+ Sep 7 + 05 + 13:12 +
+ + + Kubuntu-es Vuelta a La Vida (Y Van...)

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Vale, kubuntu-es ya ha vuelto a la vida. Veremos cuánto dura esta vez. Tenemos el "factor Raúl", es decir, lo que el dueño del hosting tolere el consumo de ancho de banda de lo que se supone es un portal en español de una distribución de linux. Nota: tengo que recordar preguntarle a Rouzic qué pasó con el hosting de Canonical. A ver si ahora vamos a ser los Riddell españoles XD
+ + + + +
+ + +
+ +
+ + +

+
+ Jul 25 + 05 + 13:09 +
+ + + El "Top Five" De Lo Que Linux Debería Aprender

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Este artículo es una traducción libre del orginal en Linux Watch:

---

Linux tiene un montón de cosas buenas -- open-source, seguridad, fiabilidad -- pero está bien lejos de la perfección. De hecho, Linux y sus vendedores podrían mirar en aprender algunas cosas de Microsoft. Sí, Microsoft. ¿Como qué? Aquí está mi "top five" de cosas que Linux pudiera aprender de Microsoft.

1. MSDN Difundid la palabra: "digg" (menead) esta historia. Con Linux y el software open-source, todo el código es abierto, con lo que cualquier desarrollador puede dar el salto y empezar a trabajar. Esto es genial, pero ¿y si no sabes por dónde empezar? ¿Y si no estás del todo seguro, o no demasiado seguro, acerca de cuál es el método correcto para programar un proyecto dado? ¿Y si quieres escribir (desarrollar) algo nuevo y útil... pero descubres tras tres meses de proyecto que estás duplicando un trabajo que se ha realizado una docena de veces? No hay guías fáciles de uso de programación adecuada en open-source. Para aprender cómo hacerlo correctamente, por norma lleva un par de años averiguar las leyes del software libre. Con Microsoft, sin embargo, está el Microsoft Developer Network (MSDN). MSDN provee a los desarrolladores ayuda a escribir aplicaciones usando los productos y herramientas de programación de Microsoft. Y cuando digo ayuda, quiero decir AYUDA. Hay tutoriales bien escritos, mejores guías prácticas, las últimas betas y copias de producción de sistemas operativos y software, herramientas de desarrollo de software, ejemplos de código, comunidades on-line, artículos sin fin de los entresijos de la programación de Microsoft, y así sucesivamente. Lo mejor de todo es que está bien organizado, así que puedes aprender fácilmente lo que necesites cuando necesites aprenderlo. MSDN no es barato, pero para los desarrolladores de Microsoft vale cada céntimo que se paga. Los sitios open-source como SourceForge son muy cómodos, pero son más útiles como incubadores de proyectos que como sitios de aprendizaje. No, el open source y Linux no tienen nada que encaje con MSDN.


2. Interfaz común Cada uno tiene su propia idea de cómo construir una interfaz. Pero lo que los usuarios quieren es una interfaz común. Quieren aprender un método para hacer todas sus tareas comunes. Cuanto más les pides aprender cosas distintas para hacer lo mismo, más se enfadan. En su mayor parte, Microsoft se ha estancado en hacer evolucionar sus interficies. Si conociste Office 97, puedes moverte fácilmente con Office 2003. Y una vez que te haces con Windows 98SE, no te llevará demasiado hacerte con el XP SP2. En Linux, puede ser un salto mucho mayor de una aplicación a otra, o de KDE a Gnome a Enlightenment. Aún así, Microsoft está empezando a golpear. La interfaz de Office 12 es bastante nueva, y muchos usuarios lo ven como una molestia mayor. Paralelamente, Linux va haciendo de las suyas con el Proyecto Portland, un trabajo de equipo de todos los escritorios grandes de linux, está desarrollando no sólo APIs comunes (API: Application Programming Interface, Interfaz de Programación de Aplicación), sino también interficies comunes de usuario. Entre este año y el siguiente, Linux, y no Microsoft, tendrán la ventaja en este tema.


3. Formatos Comunes Los formatos de Microsoft Office son propietarios, pero por la presión de la demanda de mercado, se han convertido en formatos universales. Como las interficies, los formatos se han ido cambiando, pero es normalmente posible importar satisfactoriamente los formatos antiguos a los nuevos programas sin pérdida de datos. El formato ODF (Open Document Format) ofrece un cambio algo mejor. Es un formato que cualquiera puede usar y leer. El problema es que, incluso ahora, no tiene soporte suficiente. Estoy esperando el día en que Linux y todas las aplicaciones open-source puedan leer y escribir ODF. Hasta que llegue ese día, la ventaja de este formato se morirá con Linux y algunos programas open-source.


4. Marketing Una razón de peso por la que Microsoft está en la cumbre es porque pagan continuamente cientos de millones cada año de marketing y propaganda. Echad un vistazo a casi cada revista de tecnología, y vereis un cartel de Microsoft. Periódicos de la ciudad, también. Televisión, igualmente. Se puede argumentar que parte de ese dinero ha sido malgastado. Quiero decir, ¿y qué hay de esos dinosaurios de oficina? Pero, de una manera u otra, Microsoft está siempre al lado de sus clientes. No te molestes en soltar el tema de marketing por saturación. Es el motivo por el que la gente bebe Coca-Cola, compra Toyotas, aún fuma cigarrillos y sí, usa Windows. ¿Y qué hacen las compañías de Linux en el tema de los anuncios? Casi nada. Tontos. Por cada diez, incluso por cada cien anuncios de Microsoft, veo uno de Linux. ¿Por qué crees que los sitios de Linux, como éste (Linux Today), y muchos otros tienen anuncios de Microsoft? Porque Microsoft compra el espacio para el anuncio, y las compañías de Linux casi nunca lo hacen. Así de simple. Desde hace mucho, las distribuciones de Linux han vivido de los sitios de noticias Linux, sí, como éste (Linux Today), que informan de cada pequeño movimiento de Linux. Adivinad qué, chicos. Eso está bien para construir un nicho. Felicidades, funcionó. También funcionó para Amiga y OS/2, apesta para un mercado masivo y creciente. También está empezando a no funcionar. Oh, la gente lee nuestra familia de publicaciones de Linux cada mes. Estoy seguro que es cierto también para los otros espacios de Linux. Recuerdo, sin embargo, cuando la nueva generación de espacios de noticias online, como Slashdot, también hacían que Linux acapararan las portadas, y al resto las ponían como las noticias de menor importancia. Ahora, muchas grandes historias del mundo Linux ni siquiera están, ni en Slashdot ni en Digg. ¿Por qué? Porque mientras el total de usuarios de Linux está creciendo, ya no es un crecimiento brutal. Linux ya no más el más nuevo y excitante de los chicos del barrio. Los vendedores de Linux ya no cuentan más con que se lea la noticia de una nueva distribución o servicio salvo por gente que ya se ha pasado a Linux. ¿Quieres clientes nuevos? ¿Quieres clientes de Microsoft? Basta de excitaciones por poner -- oh, vaya -- una paginita o anuncio pequeño en el New York Times. Comienza a gastar cuartos en exponer el mensaje de Linux, tu mensaje, delante de los clientes, todos los días.


5. Soporte OEM Si quiero usar un escritorio Windows, simplemente compro un ordenador. Ni más ni menos. Microsoft ha tenido los OEM (Original Equipment Manufacturers) en su bolsillo por casi una década. Y ya basta. Los vendedores de Linux deben poner su granito de arena para hacer que Linux venga pre-instalado. Sí, es muy fácil instalar Xandros en un PC, pero enfrentémonos a los hechos: la mayor parte de los usuarios nunca instalarán un sistema operativo en su vida. Los usuarios usan lo que tienen delante, y no hay más. Para que el escritorio Linux siga adelante, cuando un usuario enciende el ordenador, tiene que ver arrancar Linux. Así de simple. Continúo pensando que el soporte para el escritorio Linux tiene que ser un añadido para cualquier OEM. Una vez que HP y Dell vean que hay dinero en el escritorio Linux, lo pondrán en sus equipos, y entonces (y sólo entonces), podemos hablar seriamente del llamado "año del escritorio Linux". Un problema relacionado es la eterna molestia de los controladores. Cualquier pedazo de basura de hardware tiene un controlador de Windows. Incluso hoy en día, muchos periféricos no tienen soporte en Linux. Sí, ya sé que mirando un poco y toqueteando el sistema puedes conseguir que la mayor parte del equipo funcione. ¿Cuántas personas quieren meterse en resolver este problema? No demasiada. Cuando alguien comienza a usar Linux la primera vez, y una tarjeta de sonido integrada o una tarjeta WiFi o lo que sea no funciona, ¿piensan quizá que "tío, ojalá esta gentuza diera soporte a Linux", o piensan que "vaya, Linux tiene que estar estropeado, mi trasto multimedia no funciona, y de siempre ha funcionado con Windows"? Te diré lo que piensan: piensan que Linux está estropeado. Linux nunca tendrá el soporte universal de hardware que Windows tiene, pero sus desarrolladores tienen que intentar con todas sus fuerzas e influencias acercar sus drivers al open-source lo más posible. Afortunadamente, algunos de los OEM de PC, como Dell, presionan a sus proveedores para que proporcionen controladores de Linux para sus equipos. Con más de este tipo de soporte, podremos ver a Linux acercarse finalmente a Microsoft.


Conclusión Si Linux, sus distribuidores, empresas y proveedores pueden aprender estas lecciones de parte de Microsoft, el pequeño sistema operativo del pingüino será mucho mejor de lo que es hoy en día. Sólo porque muchos fans de Linux odien Microsoft no significa que no podamos aprender algo del Impero del Mal. Podemos, y deberíamos.


---


El tema del soporte para nuevos desarrollos no lo veo tan mal como lo pinta el artículo. Es cierto que un desarrollador no tiene más remedio que ponerse a pensar en qué herramienta tiene que usar para empezar un trabajo (que si GTK2, que si QT o KDE, que si wxWindows, que si python+GTK o python+KDE...), y de los tantísimos que hay, la respuesta de los profesionales es "el que te resulte más cómodo". Pero también es cierto que en Windows había formas y formas de hacer las cosas. Si usabas Visual Basic o Visual C++, podías disponer de la API directa de Windows. Si usabas Delphi, la API te la daba aparte el programa (curiosamente, como mejor funcionaba era así).


Yo echo mucho, muchísimo de menos, una RAD (Rapid Appliation Development, Desarrollo Rápido de Aplicación) a la que vaya metiendo componentes de terceros o propios y me permitan tener una aplicación hecha en un momento y perfectamente integrada en mi entorno (KDE, para los que lo quieran saber).


En lo que a los formatos comunes se refiere, el autor debería recordar que ya hay incluso un plug-in para la lectura de ODF hasta en Office 2003. Es decir, Microsoft LE TEME al ODF. No es para menos. No se trata de cuota de mercado, se trata de estandarización: un formato libre es mucho más fácil de difundir que no uno propietario, cuyo "padre" tiene que ser una killer application para que todo el mundo se disponga a usarlo. ¿Cuánto ha tardado el .doc de Microsoft Office en convertirse en estándar, en base a lo que está tardando el tipo ODF?


Campañas de publicidad: en España dudo que las veamos si llegaran a existir. Alguna que otra vez nos viene por TV el anuncio de PC City o de Mediamarkt, pero deja de contar. El Estado español hace tiempo que se vendió al mercado yanki, nos guste o no. Afortunadamente, las comunidades autónomas tienen libertad para elegir el soporte en que se procesen los datos siempre que se provea de la información necesaria para replicar dicha información en el resto de competencias. Adivinad qué: resulta que Linux es libre. Resulta que se puede replicar. Resulta que se puede PERSONALIZAR. Gracias Linex, gracias Guadalinex, gracias Lliurex, y gracias a otras que ahora no me vienen a la cabeza pero sé que existís (aunque ya podríais basaros en KDE, ¡coña!).


Drivers... ¡ay, los drivers! ¿Qué puedo hacer yo, usuario de nVidia, para que la aceleración 3D me venga de fábrica? Pues pagar por el sistema. ¿Qué? Pues sí, nVidia tiene drivers descargables gratuitamente, pero no pueden ser distribuidos si no es pagando por ellos. Así que Linux tiene que ser de pago para ello. Lo mismo con los mp3, algunas webcams, algunas tarjetas WiFi... Hay que pagar por ello, porque ha sido licenciado así. ¿Yo me compraría un PC con Linux en cuya factura pusiera "S.O. Linux - 15EUR" ? Sí. Primero, porque ese precio para el Sistema Operativo es irrisorio. Segundo, porque sé que esos 15 EUR no son por el soporte en CD (que seguramente vendría), sino más bien porque la empresa ha pagado por incluir licencias de nVidia y ATI (y posiblemente otras) en sus controladores para el kernel, en licencias de reproducción de MPEG (mp3 mayormente) y WMA/WMV (aunque se distribuyan los w32codecs, hay que recordar que éstos tienen licencia y ¡efectivamente! es de pago). En fin, que si a mí un PC me cuesta 600 EUR sin S.O., no me importa pagar 615 por el S.O. si éste es Linux, viene preinstalado y con los drivers bien instaladitos y un sitio web de donde bajarme los que necesite en un futuro. En mi caso tal vez no fuera a hacerlo porque sé de dónde conseguirlos sin romper licencias, pero al olmo de un usuario novel no pienso pedirle peras.
+ + + + +
+ + +
+ +
+ + +

+
+ Jun 23 + 05 + 13:07 +
+ + + Diversificación Y Estándares

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Como usuario de linux que soy, y venido anteriormente de un mundo Windows, me encuentro con una serie de incomodidades que, aunque fáciles de resolver (para mí), creo que deberían dejar de existir. Y no me refiero al tema de las licencias (como los mp3, por ejemplo), que también lo podría mencionar, sino al exceso de diversificación de las distribuciones linux. Tenemos Red Hat (empresa/servidor) y su pequeña Fedora (workstation/casa), Mandriva, Novell-SuSE, Debian/Ubuntu/Knoppix ... ¡Buf! ¿Y qué hace el usuario? ¿Cómo se le puede convencer a un usuario acerca de la distribución más adecuada a sus necesidades? ¿Y cómo se le convence de desinstalar todo y volver a instalar cuando estas necesidades han cambiado? Para este tipo de situaciones se generan acuerdos, consensos y, en consecuencia, estándares. Uno de ellos es la LSB (Linux Standard Base).

Pero no es suficiente: la paquetería es distinta, y, cuando no lo es, se recomienda no mezclar paquetes de distintos orígenes (caso por ejemplo de Red Hat/Mandriva/SuSE o Debian/Ubuntu). En el caso de Windows es fácil: está preparado para Windows, sí o sí. Que lo esté para sus distintas versiones es aparte, pero al menos las versiones de Windows tienen un periodo de vida que permite la readaptación paulatina.

Pero, ¿qué pasa cuando un informático recomienda Mandriva "para empezar" y luego Red Hat/Fedora "para cosas más serias"? Que el usuario vuelve a encontrarse con el infierno de las dependencias, del cambio de nombre entre paquetes, de las versiones de núcleo y no-núcleo, etc. Bien, volviendo al tema de los estándares: tenemos trabajo. Mucho trabajo. Uno no puede estar pensando en qué distribución es la mejor o la más adecuada (la gente suele mirar más lo primero que lo segundo), sino que funcione el ordenador para lo que lo compró, y algo más. Salen nuevas versiones y distribuciones de Linux cada poco, cada TAN poco que resulta confuso.

Para muestra, un botón: le conté a mi churri que iba a sustituir Fedora por Kubuntu en mi ordenador, y me dijo "ah, pero ¿no te lo habías instalado hace poco?" Efectivamente, no tenía ni dos semanas instalada Fedora, y, aunque me gustara mucho su acabado, echaba de menos el sistema APT de Debian. Tuve que explicarle que Linux es sólo el núcleo, y que luego está la serie de programas que funcionan bajo ese núcleo, que debido al enfoque de cada empresa para el sector al que quisiera destinar el producto, se realizan recopilaciones o "distros" que cumplen (o intentan) los objetivos de dicho enfoque.

"¿Y no puede haber un Linux Home, un Pro y un Server?" Una pregunta tan sencilla que tapa la boca. Naturalmente que hay distros que cumplen ese cometido, pero se reparten tanto-tantísimo el mercado actual, que la confusión crece por el temor de no haber elegido la correcta.

Rezo por el día en que se dejen de hacer tantas distros como formas de pensar, que se aúnen esfuerzos y que luego sí, se hagan las personalizaciones/enfoques que se quieran, gracias al uso de software libre. Pero por el amor de Dios, unamos esfuerzos y ahorremos energías, que si queremos un escritorio de calidad que compita con los comerciales, lo que estamos haciendo es el primo.

Ea, uníos a Kubuntu :P
+ + + + +
+ + +
+ +
+ + +

+
+ Jun 14 + 05 + 13:06 +
+ + + ¿Informático? ¿ezoqué?

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
¿Por qué he puesto semejante título? Muy sencillo: los estudiantes/currantes de informática (ojo, gente con conocimiento, no pardillos que se echan las flores al hombro por configurar el emule y hacer que funcione el crack para el Fifa 2006) estamos infravalorados por las empresas.

Recogiendo un enlace de meneame: Cuando hay un problema informático las empresas acuden a los... amigos Aún cuando la avería es grave, los gestores de las pymes se resisten a tener un equipo de mantenimiento y llaman a conocidos o a tiendas de informática. En la mayoría de las pymes se desconfía de las empresas de mantenimiento informático, de ahí que, según datos del estudio Actualizer, decidan recurrir a un amigo o a la tienda en la que compraron los ordenadores para arreglar una incidencia técnica. A pesar de que el 85% de las pymes tiene acceso a Internet, no se lanzan a contratar un plan de asistencia informática por malas experiencias previas. Los principales problemas son: virus, desconfiguración de las impresoras y lentitud del ordenador. Los amigos informáticos están hartos de que sus conocidos les reclamen para arreglar sus problemas y a veces ponen excusas para no ir en su ayuda. "No escuchan y no dan ni las gracías".

Efectivamente. Ni escuchan los consejos, ni dan las gracias. Rouzic en su día mencionó una frase que viene al dedo: "¿Para aprender a manejar un coche no vas a la autoescuela? Entonces, ¿por qué esperas que para manejar un ordenador te salga todo solo o, en su defecto, tengas a mano el teléfono del 'amigo informático' ?". Muchos de nosotros echamos una mano a los amigos precisamente por eso, porque son amigos. No se nos está haciendo un favor arreglando gratuitamente una máquina a la que no se ha tenido cuidado. Y tampoco se nos agradece, todo lo más una sonrisita que casi nos hace pensar en el dinero que se ha ahorrado nuestro supuesto amigo. Haced el favor, cuando compreis un ordenador no espereis que sea "enchufar y listo". Si os lo venden así, MIENTEN. Un PC no es una lavadora, no es una nevera, no es una TV. No es una máquina dedicada a una tarea, requiere unos cuidados más allá de la limpieza de polvo y mantenimiento de las piezas. Requiere que cuidemos el software y los datos que en él instalemos. Hagamos un símil: eres el jefe de una pequeña empresa y contratas a alguien polivalente, esto es, ha sido informático, electrónico, contable, intérprete y traductor de alemán, inglés y francés, y encima abogado. Toda una joya, ¿no? Vale, ¿y qué pasaría si lo tuvieras intentando sacarle rendimiento 24 horas al día, 7 días a la semana, con un salario miserable (por no decir "de becario") y con un trato que roza la ilegitimidad de los derechos humanos? Efectivamente, que esa joya de persona se harta y deja de trabajar como es debido. Obviamente, no podemos comparar a día de hoy un PC con una persona, pero sí la actitud de este jefe de empresa. Un PC es una máquina compleja, de cuidado complejo, y cuyos cuidadores (informáticos o pre-informáticos) son infravalorados debido a que está "el amiguito que consigue gratis el ófis" que, naturalmente, cobra mucho menos aún a sabiendas de que ha sobrepasado la línea de la ilegalidad. Señoras y señores, admitámoslo: valoramos el precio por encima de la calidad. No sabemos lo que hay dentro de nuestros equipos, y no nos importa mientras "el amigo que sabe de informática" nos resuelva los problemas rápidamente y sin tener que pagar a alguien cualificado. Curiosamente, luego nos piden doscientas mil certificaciones, quince años de experiencia en cada sector, ser menor de 25 años y carnet de saber conducir hasta jamelgos con esquizofrenia paranoide. ¿Para qué tanto título, si luego sólo soy "el amigo que sabe de informática"? Por cierto, que parece ser que he sido imbuído por el espíritu del pringao-howto, ya que algunas líneas han sido quasi-copiadas de él, imagino que porque no ha parado de ocurrirme en esta vida.

Remito el original para quien tenga ganas de echarse unas risas (sarcásticas, naturalmente).
+ + + + +
+ + +
+ +
+ + +

+
+ May 16 + 05 + 13:06 +
+ + + Kubuntu-es Reabierta

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
También antes de la salida de dapper, como ocurriera en su versión anterior, ha sido re-reabierta kubuntu-es. Bueno, como re-reabrir queda un poco mal, diremos que ha salido la versión 2.0. El parecido con la original ha sido la prima de esta versión, manejando sus juegos de colores y agregando el icono de la ruedecita de kubuntu.de para los menús. Parece que algún admin no ha querido recordar esa prima (o no ha sabido que existía tal) a la hora de implementar las opciones disponibles, ya que, una tarde, felizmente yo viajando por la página, me encuentro opciones arriba, a la izquierda y a la derecha. El cabreo que pillé fue de impresión. ¿Tanta leche con que tiene que ser fiel a la original, para que me pongan un p*to menú a la derecha? Afortunadamente en poco tiempo apareció Rouzic por MSN. Hablé con él y, tras indicarme que no había puesto él tales opciones, y menos a ese lado de la página, las recoloqué todas a mano izquierda. Hombre, es que uno se dedica a modificar temitas del drupal para que luego te venga otro, y crea que faltan cosas y las ponga a su gusto... Esto suele ocurrir cuando no se tiene concretado el trabajo en equipo. Tener un esquema y seguirlo es más efectivo, ya que uno no entra y le chafa el trabajo al otro. En fin, la página ha tenido su éxito nada más resurgir, y espero que dapper mejore su soporte para AMD64 en su versión estable, porque ahora mismo deja mucho que desear.
+ + + + +
+ + +
+ +
+ + +

+
+ Jan 14 + 05 + 12:05 +
+ + + Kubuntu-es, Más Cerca De Su Presentación

+ + + Comments + + +

+ + + + + + +

+ +
+ + +
Ayer por la tarde, Rouzic y yo nos pusimos de acuerdo en lo que iba a ser el estilo final de Kubuntu-es. Y es que no hay nada mejor que tener un objetivo común y ganas de cooperar en grupo. Ahora mismo no puedo adjuntar una captura de pantalla del sitio web, pero puedo decir que utilizará los estilizados azules de Kubuntu y el orden y facilidad de navegación de kubuntu.de. Esperemos que tarde poco en adecuar el sistema, mayormente porque ya tengo unos cuantos how-to's listos para colgar :) Voy a proponer que la página se cuelgue justo el mismo día que la aparición de Dapper (estable), para darle así un poco de bombo a la cosa y que parezca que ha sido algo venido del sitio oficial. ACTUALIZACION 20/01/06 - Rouzic se me ha adelantado y ya ha colgado la página. La teneis lista en http://kubuntu-es.org.
+ + + + +
+ + + + + +
+ + +
+
+

+ Copyleft 2015 - David PG - + Powered by Octopress +

+ +
+ + + + + + +
+ + + + + + + + + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..5c3a748 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: + +Sitemap: http://devopsysadmin.github.io/sitemap.xml diff --git a/sass/_base.scss b/sass/_base.scss deleted file mode 100644 index 05fdd00..0000000 --- a/sass/_base.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "base/utilities"; -@import "base/solarized"; -@import "base/theme"; -@import "base/typography"; -@import "base/layout"; diff --git a/sass/_partials.scss b/sass/_partials.scss deleted file mode 100644 index 99c28b6..0000000 --- a/sass/_partials.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import "partials/header"; -@import "partials/navigation"; -@import "partials/blog"; -@import "partials/sharing"; -@import "partials/syntax"; -@import "partials/archive"; -@import "partials/sidebar"; -@import "partials/footer"; diff --git a/sass/base/_layout.scss b/sass/base/_layout.scss deleted file mode 100644 index 8190342..0000000 --- a/sass/base/_layout.scss +++ /dev/null @@ -1,192 +0,0 @@ -$max-width: 1200px !default; - -// Padding used for layout margins -$pad-min: 18px !default; -$pad-narrow: 25px !default; -$pad-medium: 35px !default; -$pad-wide: 55px !default; - -// Sidebar widths used in media queries -$sidebar-width-medium: 240px !default; -$sidebar-pad-medium: 15px !default; -$sidebar-pad-wide: 20px !default; -$sidebar-width-wide: 300px !default; - -$indented-lists: false !default; - -$header-font-size: 1em !default; -$header-padding-top: 1.5em !default; -$header-padding-bottom: 1.5em !default; - -.group { @include pie-clearfix; } - -@mixin collapse-sidebar { - float: none; - width: auto; - clear: left; - margin: 0; - padding: 0 $pad-medium 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid lighten($sidebar-border, 4); - section { - &.odd, &.even { float: left; width: 48%; } - &.odd { margin-left: 0; } - &.even { margin-left: 4%; } - } - &.thirds section { - width: 30%; - margin-left: 5%; - &.first { - margin-left: 0; - clear: both; - } - } -} - -body { - -webkit-text-size-adjust: none; - max-width: $max-width; - position: relative; - margin: 0 auto; - > header, > nav, > footer, #content > article, #content > div > article, #content > div > section { - @extend .group; - padding-left: $pad-min; - padding-right: $pad-min; - @media only screen and (min-width: 480px) { - padding-left: $pad-narrow; - padding-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - padding-left: $pad-medium; - padding-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - padding-left: $pad-wide; - padding-right: $pad-wide; - } - } - div.pagination { - @extend .group; - margin-left: $pad-min; - margin-right: $pad-min; - @media only screen and (min-width: 480px) { - margin-left: $pad-narrow; - margin-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - margin-left: $pad-medium; - margin-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - margin-left: $pad-wide; - margin-right: $pad-wide; - } - } - > header { - font-size: $header-font-size; - padding-top: $header-padding-top; - padding-bottom: $header-padding-bottom; - } -} - -#content { - overflow: hidden; - > div, > article { width: 100%; } -} - -aside.sidebar { - float: none; - padding: 0 $pad-min 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid $sidebar-border; - @extend .group; -} - -.flex-content { max-width: 100%; height: auto; } - -.basic-alignment { - &.left { float: left; margin-right: 1.5em; } - &.right { float: right; margin-left: 1.5em; } - &.center { display:block; margin: 0 auto 1.5em; } - &.left, &.right { margin-bottom: .8em; } -} - -.toggle-sidebar { &, .no-sidebar & { display: none; }} - -body.sidebar-footer { - @media only screen and (min-width: 750px) { - aside.sidebar{ @include collapse-sidebar; } - } - #content { margin-right: 0px; } - .toggle-sidebar { display: none; } -} - -@media only screen and (min-width: 550px) { - body > header { font-size: $header-font-size; } -} -@media only screen and (min-width: 750px) { - aside.sidebar { @include collapse-sidebar; } -} -#main, #content, .sidebar { - @extend .group; -} -@media only screen and (min-width: 768px) { - body { -webkit-text-size-adjust: auto; } - body > header { font-size: $header-font-size * 1.2; } - #main { - padding: 0; - margin: 0 auto; - } - #content { - overflow: visible; - margin-right: $sidebar-width-medium; - position: relative; - .no-sidebar & { margin-right: 0; border-right: 0; } - .collapse-sidebar & { margin-right: 20px; } - > div, > article { - padding-top: $pad-medium/2; - padding-bottom: $pad-medium/2; - float: left; - } - } - aside.sidebar { - width: $sidebar-width-medium - $sidebar-pad-medium*2; - padding: 0 $sidebar-pad-medium $sidebar-pad-medium; - background: none; - clear: none; - float: left; - margin: 0 -100% 0 0; - section { - width: auto; margin-left: 0; - &.odd, &.even { float: none; width: auto; margin-left: 0; } - } - .collapse-sidebar & { - @include collapse-sidebar; - } - } -} - -@media only screen and (min-width: 992px) { - body > header { font-size: $header-font-size * 1.3; } - #content { margin-right: $sidebar-width-wide; } - #content { - > div, > article { - padding-top: $pad-wide/2; - padding-bottom: $pad-wide/2; - } - } - aside.sidebar { - width: $sidebar-width-wide - $sidebar-pad-wide*2; - padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide; - .collapse-sidebar & { - padding: { left: $pad-wide; right: $pad-wide; } - } - } -} - -@if $indented-lists == false { - @media only screen and (min-width: 768px) { - ul, ol { margin-left: 0; } - } -} - diff --git a/sass/base/_solarized.scss b/sass/base/_solarized.scss deleted file mode 100644 index 45d8fc5..0000000 --- a/sass/base/_solarized.scss +++ /dev/null @@ -1,46 +0,0 @@ -$base03: #002b36 !default; //darkest blue -$base02: #073642 !default; //dark blue -$base01: #586e75 !default; //darkest gray -$base00: #657b83 !default; //dark gray -$base0: #839496 !default; //medium gray -$base1: #93a1a1 !default; //medium light gray -$base2: #eee8d5 !default; //cream -$base3: #fdf6e3 !default; //white -$solar-yellow: #b58900 !default; -$solar-orange: #cb4b16 !default; -$solar-red: #dc322f !default; -$solar-magenta: #d33682 !default; -$solar-violet: #6c71c4 !default; -$solar-blue: #268bd2 !default; -$solar-cyan: #2aa198 !default; -$solar-green: #859900 !default; - -$solarized: dark !default; - -@if $solarized == light { - - $_base03: $base03; - $_base02: $base02; - $_base01: $base01; - $_base00: $base00; - $_base0: $base0; - $_base1: $base1; - $_base2: $base2; - $_base3: $base3; - - $base03: $_base3; - $base02: $_base2; - $base01: $_base1; - $base00: $_base0; - $base0: $_base00; - $base1: $_base01; - $base2: $_base02; - $base3: $_base03; -} - -/* non highlighted code colors */ -$pre-bg: $base03 !default; -$pre-border: darken($base02, 5) !default; -$pre-color: $base1 !default; - - diff --git a/sass/base/_theme.scss b/sass/base/_theme.scss deleted file mode 100644 index c35136d..0000000 --- a/sass/base/_theme.scss +++ /dev/null @@ -1,85 +0,0 @@ -$noise-bg: image-url('noise.png') top left !default; -$img-border: inline-image('dotted-border.png') !default; - -// Main Link Colors -$link-color: lighten(#165b94, 3) !default; -$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default; -$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default; -$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default; - -// Main Section Colors -$main-bg: #f8f8f8 !default; -$page-bg: #252525 !default; -$article-border: #eeeeee !default; - -$header-bg: #333 !default; -$header-border: lighten($header-bg, 15) !default; -$title-color: #f2f2f2 !default; -$subtitle-color: #aaa !default; - -$text-color: #222 !default; -$text-color-light: #aaa !default; -$type-border: #ddd !default; - -/* Navigation */ -$nav-bg: #ccc !default; -$nav-bg-front: image-url('noise.png') !default; -$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default; -$nav-color: darken($nav-bg, 38) !default; -$nav-color-hover: darken($nav-color, 25) !default; -$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default; -$nav-border: darken($nav-bg, 10) !default; -$nav-border-top: lighten($nav-bg, 15) !default; -$nav-border-bottom: darken($nav-bg, 25) !default; -$nav-border-left: darken($nav-bg, 11) !default; -$nav-border-right: lighten($nav-bg, 7) !default; - -/* Sidebar colors */ -$sidebar-bg: #f2f2f2 !default; -$sidebar-link-color: $text-color !default; -$sidebar-link-color-hover: $link-color-hover !default; -$sidebar-link-color-active: $link-color-active !default; -$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default; -$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default; -$sidebar-border-hover: darken($sidebar-bg, 7) !default; -$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default; -$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default; - -$footer-color: #888 !default; -$footer-bg: #ccc !default; -$footer-bg-front: image-url('noise.png') !default; -$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default; -$footer-color: darken($footer-bg, 38) !default; -$footer-color-hover: darken($footer-color, 10) !default; -$footer-border-top: lighten($footer-bg, 15) !default; -$footer-border-bottom: darken($footer-bg, 15) !default; -$footer-link-color: darken($footer-bg, 38) !default; -$footer-link-color-hover: darken($footer-color, 25) !default; -$page-border-bottom: darken($footer-bg, 5) !default; - - -/* Core theme application */ - -a { - @include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active); -} -aside.sidebar a { - @include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active); -} -a { - @include transition(color .3s); -} - -html { - background: $page-bg image-url('line-tile.png') top left; -} -body { - > div { - background: $sidebar-bg $noise-bg; - border-bottom: 1px solid $page-border-bottom; - > div { - background: $main-bg $noise-bg; - border-right: 1px solid $sidebar-border; - } - } -} diff --git a/sass/base/_typography.scss b/sass/base/_typography.scss deleted file mode 100644 index 9a6bbac..0000000 --- a/sass/base/_typography.scss +++ /dev/null @@ -1,164 +0,0 @@ -$blockquote: $type-border !default; -$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default; -$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default; -$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; -$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default; -$header-title-font-family: $heading-font-family !default; -$header-subtitle-font-family: $heading-font-family !default; - -// Fonts -.heading { - font-family: $heading-font-family; -} -.sans { font-family: $sans; } -.serif { font-family: $serif; } -.mono { font-family: $mono; } - -body > header h1 { - font-size: 2.2em; - @extend .heading; - font-family: $header-title-font-family; - font-weight: normal; - line-height: 1.2em; - margin-bottom: 0.6667em; -} -body > header h2 { - font-family: $header-subtitle-font-family; -} - -body { - line-height: 1.5em; - color: $text-color; - @extend .serif; -} -h1 { - font-size: 2.2em; - line-height: 1.2em; -} - -@media only screen and (min-width: 992px) { - body { font-size: 1.15em; } - h1 { font-size: 2.6em; line-height: 1.2em; } -} - -#{headings()}{ - @extend .heading; - text-rendering: optimizelegibility; - margin-bottom: 1em; - font-weight: bold; -} -h2, section h1 { - font-size: 1.5em; -} -h3, section h2, section section h1 { - font-size: 1.3em; -} -h4, section h3, section section h2, section section section h1 { - font-size: 1em; -} -h5, section h4, section section h3 { - font-size: .9em; -} -h6, section h5, section section h4, section section section h3 { - font-size: .8em; -} - -p, article blockquote, ul, ol { margin-bottom: 1.5em; } - -ul { list-style-type: disc; - ul { list-style-type: circle; margin-bottom: 0px; - ul { list-style-type: square; margin-bottom: 0px; }}} - -ol { list-style-type: decimal; - ol { list-style-type: lower-alpha; margin-bottom: 0px; - ol { list-style-type: lower-roman; margin-bottom: 0px; }}} - -ul, ol { &, ul, ol { margin-left: 1.3em; }} -ul, ol { ul, ol { margin-bottom: 0em; }} - -strong { font-weight: bold; } - -em { font-style: italic; } - -sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} -sup { top: -.5em; } -sub { bottom: -.5em; } - -a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } - -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } -} - -em, dfn { font-style: italic; } - -strong, dfn { font-weight: bold; } - -del, s { text-decoration: line-through; } - -abbr, acronym { border-bottom: 1px dotted; cursor: help; } - -pre, code, tt { @extend .mono; } - -hr { margin-bottom: 0.2em; } - -small { font-size: .8em; } - -big { font-size: 1.2em; } - -article blockquote { - $bq-margin: 1.2em; - font-style: italic; - position: relative; - font-size: 1.2em; - line-height: 1.5em; - padding-left: 1em; - border-left: 4px solid rgba($text-color-light, .5); - cite { - font-style: italic; - a { color: $text-color-light !important; word-wrap: break-word; } - &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } - } - @media only screen and (min-width: 992px) { - padding-left: 1.5em; - border-left-width: 4px; - } -} - -.pullquote-right:before, -.pullquote-left:before { - /* Reset metrics. */ - padding: 0; - border: none; - - /* Content */ - content: attr(data-pullquote); - - /* Pull out to the right, modular scale based margins. */ - float: right; - width: 45%; - margin: .5em 0 1em 1.5em; - - /* Baseline correction */ - position: relative; - top: 7px; - font-size: 1.4em; - line-height: 1.45em; -} - -.pullquote-left:before { - /* Make left pullquotes align properly. */ - float: left; - margin: .5em 1.5em 1em 0; -} - -/* @extend this to force long lines of continuous text to wrap */ -.force-wrap { - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; -} - diff --git a/sass/base/_utilities.scss b/sass/base/_utilities.scss deleted file mode 100644 index 2d49e65..0000000 --- a/sass/base/_utilities.scss +++ /dev/null @@ -1,28 +0,0 @@ -@mixin mask-image($img, $repeat: no-repeat){ - @include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms); - @include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms); - width: image-width($img); - height: image-height($img); -} - -@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) { - @include border-radius($border-radius); - @include box-shadow($shadow); - @include box-sizing(border-box); - border: $border; -} - -@mixin selection($bg, $color: inherit, $text-shadow: none){ - * { - &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } - } -} - -@function text-color($color, $dark: dark, $light: light){ - $text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000; - $text-color: if($text-color >= 150, $dark, $light); - @return $text-color; -} - diff --git a/sass/custom/_colors.scss b/sass/custom/_colors.scss deleted file mode 100644 index 740266a..0000000 --- a/sass/custom/_colors.scss +++ /dev/null @@ -1,43 +0,0 @@ -// Here you can easily change your sites's color scheme. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. -// If you need a handy color picker try http://hslpicker.com - -//$header-bg: #263347; -//$subtitle-color: lighten($header-bg, 58); -//$nav-bg: desaturate(lighten(#8fc17a, 18), 5); -//$nav-bg-front: image-url('noise.png'); -//$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)); -//$sidebar-bg: desaturate(#eceff5, 8); -//$sidebar-link-color: saturate(#526f9a, 10); -//$sidebar-link-color-hover: darken(#7ab662, 9); -//$footer-bg: #ccc !default; -//$footer-bg-front: image-url('noise.png'); -//$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)); - - -/* To use the light Solarized highlighting theme uncomment the following line */ -//$solarized: light; - -/* If you want to tweak the Solarized colors you can do that here */ -//$base03: #002b36; //darkest blue -//$base02: #073642; //dark blue -//$base01: #586e75; //darkest gray -//$base00: #657b83; //dark gray -//$base0: #839496; //medium gray -//$base1: #93a1a1; //medium light gray -//$base2: #eee8d5; //cream -//$base3: #fdf6e3; //white -//$solar-yellow: #b58900; -//$solar-orange: #cb4b16; -//$solar-red: #dc322f; -//$solar-magenta: #d33682; -//$solar-violet: #6c71c4; -//$solar-blue: #268bd2; -//$solar-cyan: #2aa198; -//$solar-green: #859900; - - -/* Non highlighted code colors */ -//$pre-bg: $base03; -//$pre-border: darken($base02, 5); -//$pre-color: $base1; diff --git a/sass/custom/_fonts.scss b/sass/custom/_fonts.scss deleted file mode 100644 index 1a6b2a0..0000000 --- a/sass/custom/_fonts.scss +++ /dev/null @@ -1,10 +0,0 @@ -// Here you can easily change font faces which are used in your site. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's. -// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html - -//$sans: "Optima", sans-serif; -//$serif: "Baskerville", serif; -//$mono: "Courier", monospace; -//$heading-font-family: "Verdana", sans-serif; -//$header-title-font-family: "Futura", sans-serif; -//$header-subtitle-font-family: "Futura", sans-serif; diff --git a/sass/custom/_layout.scss b/sass/custom/_layout.scss deleted file mode 100644 index 74c7de9..0000000 --- a/sass/custom/_layout.scss +++ /dev/null @@ -1,21 +0,0 @@ -// Here you can easily change your sites's layout. -// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works. - -//$header-font-size: 1em; -//$header-padding-top: 1.5em; -//$header-padding-bottom: 1.5em; - -//$max-width: 1350px; -//$indented-lists: true; - -// Padding used for layout margins -//$pad-min: 18px; -//$pad-narrow: 25px; -//$pad-medium: 35px; -//$pad-wide: 55px; - -// Sidebar widths used in media queries -//$sidebar-width-medium: 240px; -//$sidebar-pad-medium: 15px; -//$sidebar-pad-wide: 20px; -//$sidebar-width-wide: 300px; diff --git a/sass/custom/_styles.scss b/sass/custom/_styles.scss deleted file mode 100644 index 84a22ef..0000000 --- a/sass/custom/_styles.scss +++ /dev/null @@ -1,147 +0,0 @@ -// This File is imported last, and will override other styles in the cascade -// Add styles here to make changes without digging in too much - -@import url('http://fonts.googleapis.com/css?family=Inconsolata|Oswald|Lato'); - -/** - * Dates - */ -div.date { - display: block; - position: relative; - width: 60px; - border: 1px solid #888885; - border-radius: 5px; - float: left; - - /* day */ - text-align: center; - letter-spacing: 2px; text-decoration: none; color: #666; - background: #fcfcfc; - margin-right: 10px; -} - -div.date sup { - position: absolute; - padding-top: 4px; - font-size: 10px; - line-height: 10px; - letter-spacing: normal; -} - -/* year + month */ -div.date abbr { - display: block; font: 10px Verdana, sans-serif; letter-spacing: normal; color: white; - border-radius: 4px 4px 0px 0px; -} - - -div.date abbr { border: 0; } - -/* month */ -div.date>:first-child { - width: 50px; - /* margin: -1px 0 0 -1px; */ - padding: 0 5px; - /*border: 1px solid #832a28;*/ - line-height: 16px; - text-align: left; - text-transform: uppercase; - background-color: #a33537; -} - -/* year */ -div.date sup+abbr { - position: absolute; - top: 0; left: 0; - width: 50px; - padding: 0 3px; - /*border: 1px solid #a33537; - border-bottom: 1px solid #832a28;*/ - line-height: 14px; - color: #eaa; - text-align: right; -} - -/* time */ -div.date sub { - display: block; - height: 17px; - border-top: 1px solid #bbd; - margin: -5px 3px; - font: 9px/16px Verdana, sans-serif; - letter-spacing: normal; - text-align: center; - color: #aac; - padding-bottom: 10px; -} - -div#content .blog-index article h1, -article header h1.entry-title{ - font-family: 'Oswald', sans-serif; - font-size: 26px; -} - -article header h1.entry-title a{ - white-space: nowrap; - -} - -article .entry-content { - font-family: 'Lato', sans-serif; - text-align: justify; -} - -div.sharing img{ - width: 30px; - box-shadow: none; - border: none; -} - -div.sharing a { - white-space: initial; - text-decoration: none; -} - -div.sharing td{ - padding-right: 10px; - vertical-align: top; -} - -article a.comments{ - font-family: 'Oswald', sans-serif; -} - -article a, -article a.comments, -footer category:visited, -article a.comments:visited{ - text-decoration: none; -} - -footer a, -footer a:visited{ - text-decoration: none; -} - -.highlight { - border-radius: 5px; -} - -hgroup h1 a{ - font-family: 'Oswald'; -} - -header hgroup h2 { - font-family: 'Lato'; -} - -section#cloud_tag { - font-family: 'Lato'; - span.tag, span.tag a { - text-decoration: none; - margin-right: 5px; - } - -} - diff --git a/sass/partials/_archive.scss b/sass/partials/_archive.scss deleted file mode 100644 index 9ef1e82..0000000 --- a/sass/partials/_archive.scss +++ /dev/null @@ -1,72 +0,0 @@ -#archive { - #content > div { &, > article { padding-top: 0; } } -} -#blog-archives { - article { - padding: 1em 0 1em; - position: relative; - background: $img-border bottom left repeat-x; - &:last-child { - background: none; - } - footer { padding: 0; margin: 0;} - } - h1 { color: $text-color; margin-bottom: .3em; } - h2 { display: none; } - h1 { - font-size: 1.5em; - a { - @include hover-link; - color: inherit; - &:hover { color: $link-color-hover; } - font-weight: normal; - display: inline-block; - } - } - a.category, time { - @extend .sans; - color: $text-color-light; - } - color: $text-color-light; - .entry-content { display: none; } - time { - font-size: .9em; - line-height: 1.2em; - .month, .day { display: inline-block; } - .month { text-transform: uppercase; } - } - p { margin-bottom: 1em; } - &, .entry-content { a { @include link-colors(inherit, $link-color-hover); }} - a:hover { color: $link-color-hover; } - @media only screen and (min-width: 550px) { - article { margin-left: 5em; } - h2 { - margin-bottom: .3em; - font-weight: normal; - display: inline-block; - position: relative; top: -1px; - float: left; - &:first-child { padding-top: .75em; } - } - time { - position: absolute; - text-align: right; - left: 0em; - top: 1.8em; - } - .year { display: none; } - article { - padding:{left: 4.5em; bottom: .7em;} - } - a.category { - line-height: 1.1em; - } - } -} -#content > .category { - article { - margin-left: 0; - padding-left: 6.8em; - } - .year { display: inline; } -} diff --git a/sass/partials/_blog.scss b/sass/partials/_blog.scss deleted file mode 100644 index 57fe7a8..0000000 --- a/sass/partials/_blog.scss +++ /dev/null @@ -1,141 +0,0 @@ -article { - padding-top: 1em; - a { @extend .force-wrap; } - header { - position: relative; - padding-top: 2em; - padding-bottom: 1em; - margin-bottom: 1em; - background: $img-border bottom left repeat-x; - h1 { - margin: 0; - a { text-decoration: none; - &:hover { text-decoration: underline; } } - } - p { - font-size: .9em; - color: $text-color-light; - margin: 0; - &.meta { - @extend .sans; - text-transform: uppercase; - position: absolute; top: 0; - } - } - @media only screen and (min-width: 768px) { - margin-bottom: 1.5em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - } - } - h2 { - padding-top: 0.8em; - background: $img-border top left repeat-x; - } - .entry-content & h2:first-child, header + h2 { padding-top: 0; } - h2:first-child, header + h2 { background: none; } - .feature { - padding-top: .5em; - margin-bottom: 1em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - font-size: 2.0em; font-style: italic; - line-height: 1.3em; - } - img, video, .flash-video { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box; - } - video, .flash-video { margin: 0 auto 1.5em; } - video { display: block; width: 100%; } - .flash-video { - > div { - position: relative; - display: block; - padding-bottom: 56.25%; - padding-top: 1px; - height: 0; - overflow: hidden; - iframe, object, embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - } - > footer { - padding-bottom: 2.5em; - margin-top: 2em; - @extend .sans; - p.meta { - margin-bottom: .8em; - font-size: .85em; - clear: both; - overflow: hidden; - } - .byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before { - @extend .separator; - } - } - -} -article + article { - .blog-index & { - background: $img-border top left repeat-x; - } -} -#content .blog-index { - padding: { top: 0; bottom: 0; } - article { padding-top: 2em; } - article header { background: none; padding-bottom: 0; } - article h1 { - font-size: 2.2em; - a { color: inherit; &:hover { color: $link-color-hover; } } - } - a[rel=full-article] { - background: darken($main-bg, 5); - display: inline-block; - padding: .4em .8em; - margin-right: .5em; - text-decoration: none; - color: mix($text-color, $text-color-light); - @extend .serif; - @include transition(background-color .5s); - &:hover { - background: $link-color-hover; - text-shadow: none; - color: $main-bg; - } - } - footer { - @extend .sans; - margin-top: 1em; - } -} - -.separator { - content: "\2022 "; - padding: 0 .4em 0 .2em; - display: inline-block; -} - -#content div.pagination { - text-align: center; - font-size: .95em; - position: relative; - background: $img-border top left repeat-x; - padding: {top: 1.5em; bottom: 1.5em;} - a { - text-decoration: none; - color: $text-color-light; - &.prev { position: absolute; left: 0; } - &.next { position: absolute; right: 0; } - &:hover { color: $link-color-hover; } - &[href*=archive] { - &:before, &:after { content: '\2014'; padding: 0 .3em; } - } - } -} diff --git a/sass/partials/_footer.scss b/sass/partials/_footer.scss deleted file mode 100644 index 3741122..0000000 --- a/sass/partials/_footer.scss +++ /dev/null @@ -1,19 +0,0 @@ -body > footer { - @extend .sans; - font-size: .8em; - color: $footer-color; - text-shadow: lighten($footer-bg, 5) 0 1px; - background-color: $footer-bg; - @include background($footer-bg-front, $footer-bg-back); - border-top: 1px solid $footer-border-top; - position: relative; - padding-top: 1em; - padding-bottom: 1em; - margin-bottom: 3em; - @include border-bottom-radius(.4em); - z-index: 1; - a { - @include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color); - } - p:last-child { margin-bottom: 0; } -} diff --git a/sass/partials/_header.scss b/sass/partials/_header.scss deleted file mode 100644 index e3c6c02..0000000 --- a/sass/partials/_header.scss +++ /dev/null @@ -1,18 +0,0 @@ -body > header { - background: $header-bg; - h1 { - display: inline-block; - margin: 0; - a, a:visited, a:hover { - color: $title_color; - text-decoration: none; - } - } - h2 { - margin: .2em 0 0; - @extend .sans; - font-size: 1em; - color: $subtitle-color; - font-weight: normal; - } -} diff --git a/sass/partials/_navigation.scss b/sass/partials/_navigation.scss deleted file mode 100644 index 30fa011..0000000 --- a/sass/partials/_navigation.scss +++ /dev/null @@ -1,137 +0,0 @@ -body > nav { - position: relative; - background-color: $nav-bg; - @include background($nav-bg-front, $nav-bg-back); - border: { - top: 1px solid $nav-border-top; - bottom: 1px solid $nav-border-bottom; } - padding-top: .35em; - padding-bottom: .35em; - form { - @include background-clip(padding-box); - margin: 0; padding: 0; - .search { - padding: .3em .5em 0; - font-size: .85em; - font-family: $sans; - line-height: 1.1em; - width: 95%; - @include border-radius(.5em); - @include background-clip(padding-box); - @include box-shadow(lighten($nav-bg, 2) 0 1px); - background-color: lighten($nav-bg, 15); - border: 1px solid $nav-border; - color: #888; - &:focus { - color: #444; - border-color: #80b1df; - @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); - background-color: #fff; - outline: none; - } - } - } - fieldset[role=search]{ float: right; width: 48%; } - fieldset.mobile-nav{ float: left; width: 48%; - select{ width: 100%; font-size: .8em; border: 1px solid #888;} - } - ul { display: none; } - @media only screen and (min-width: 550px) { - font-size: .9em; - ul { - @include horizontal-list(0); - float: left; - display: block; - padding-top: .15em; - } - ul.subscription { - margin-left: .8em; - float: right; - li:last-child a { padding-right: 0; } - } - ul li { - margin: 0; - } - a { - @include link-colors($nav-color, $nav-color-hover, $visited: $nav-color); - font-family: $sans; - text-shadow: lighten($nav-bg, 12) 0 1px; - float: left; - text-decoration: none; - font-size: 1.1em; - padding: .1em 0; - line-height: 1.5em; - } - li + li { - border-left: 1px solid $nav-border-left; - margin-left: .8em; - a { - padding-left: .8em; - border-left: 1px solid $nav-border-right; - } - } - form { - float: right; - text-align: left; - padding-left: .8em; - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px; - .search { - width: 93%; - font-size: .95em; - line-height: 1.2em; - } - } - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px; - .search { width: 91%; } - } - fieldset.mobile-nav { display: none; } - fieldset[role=search]{ width: 99%; } - } - @media only screen and (min-width: 992px) { - form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px; - } - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px; - } - } -} -.no-placeholder { - body > nav .search { - background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat; - text-indent: 1.3em; - } -} -@mixin mask-subscription-nav($feed: 'rss.png'){ - position: relative; top: 0px; - text-indent: -999999em; - background-color: $nav-border-right; - border: 0; - padding: 0; - &,&:after { @include mask-image($feed); } - &:after { - content: ""; - position: absolute; top: -1px; left: 0; - background-color: lighten($nav-color, 25); - } - &:hover:after { background-color: lighten($nav-color, 20); } -} -.maskImage { - body > nav { - @media only screen and (min-width: 550px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px; - } - } - @media only screen and (min-width: 992px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px; - } - } - } - ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }} - a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); } - a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); } -} - diff --git a/sass/partials/_sharing.scss b/sass/partials/_sharing.scss deleted file mode 100644 index 3eecb48..0000000 --- a/sass/partials/_sharing.scss +++ /dev/null @@ -1,8 +0,0 @@ -.sharing { - p.meta + & { - padding: { top: 1em; left: 0; } - background: $img-border top left repeat-x; - } -} - -#fb-root { display: none; } diff --git a/sass/partials/_sidebar.scss b/sass/partials/_sidebar.scss deleted file mode 100644 index cd8c1ca..0000000 --- a/sass/partials/_sidebar.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "sidebar/base"; -@import "sidebar/googleplus"; -@import "sidebar/pinboard"; -@import "sidebar/delicious"; diff --git a/sass/partials/_syntax.scss b/sass/partials/_syntax.scss deleted file mode 100644 index 5465286..0000000 --- a/sass/partials/_syntax.scss +++ /dev/null @@ -1,261 +0,0 @@ -.highlight, html .gist .gist-file .gist-syntax .gist-highlight { - table td.code { width: 100%; } - border: 1px solid $pre-border !important; -} -.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { - text-align: right; - font-size: 13px; - line-height: 1.45em; - @if $solarized == light { - background: lighten($base03, 1) $noise-bg !important; - border-right: 1px solid darken($base02, 2) !important; - @include box-shadow(lighten($base03, 2) -1px 0 inset); - text-shadow: lighten($base02, 2) 0 -1px; - } @else { - background: $base02 $noise-bg !important; - border-right: 1px solid darken($base03, 2) !important; - @include box-shadow(lighten($base02, 2) -1px 0 inset); - text-shadow: darken($base02, 10) 0 -1px; - } - span { color: $base01 !important; } - padding: .8em !important; - @include border-radius(0); -} - -figure.code, .gist-file, pre { - @include box-shadow(rgba(#000, .06) 0 0 10px); - .highlight pre { @include box-shadow(none); } -} - -.gist .highlight, figure.code .highlight { - @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); -} -html .gist .gist-file { - margin-bottom: 1.8em; - position: relative; - border: none; - padding-top: image-height("code_bg.png") !important; - .highlight { - margin-bottom: 0; - } - .gist-syntax { - border-bottom: 0 !important; - background: none !important; - .gist-highlight { - background: $base03 !important; - } - .highlight pre { - @extend .pre-code; - padding: 0; - } - } - .gist-meta { - padding: .6em 0.8em; - border: 1px solid lighten($base02, 2) !important; - color: $base01; - font-size: .7em !important; - @if $solarized == light { - background: lighten($base03, 2) $noise-bg; - border: 1px solid $pre-border !important; - border-top: 1px solid lighten($base03, 2) !important; - } @else { - background: $base02 $noise-bg; - } - @extend .sans; - line-height: 1.5em; - a { - color: mix($base1, $base01) !important; - @include hover-link; - &:hover { color: $base1 !important; } - } - a[href*='#file'] { - position: absolute; top: 0; left:0; right:-10px; - color: #474747 !important; - @extend .code-title; - &:hover { color: $link-color !important; } - } - a[href*=raw]{ - @extend .download-source; - top: .4em; - } - } -} -pre { - background: $pre-bg $noise-bg; - @include border-radius(.4em); - @extend .mono; - border: 1px solid $pre-border; - line-height: 1.45em; - font-size: 13px; - margin-bottom: 2.1em; - padding: .8em 1em; - color: $pre-color; - overflow: auto; -} -h3.filename { - @extend .code-title; - + pre { @include border-top-radius(0px); } -} - -p, li { - code { - @extend .mono; - display: inline-block; - white-space: no-wrap; - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - @include border-radius(.4em); - padding: 0 .3em; - margin: -1px 0; - } - pre code { font-size: 1em !important; background: none; border: none; } -} - -.pre-code { - font-family: $mono !important; - overflow: scroll; - overflow-y: hidden; - display: block; - padding: .8em; - overflow-x: auto; - line-height: 1.45em; - background: $base03 $noise-bg !important; - color: $base1 !important; - span { color: $base1 !important; } - span { font-style: normal !important; font-weight: normal !important; } - - .c { color: $base01 !important; font-style: italic !important; } /* Comment */ - .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ - .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ - .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ - .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ - .err { color: $solar-red !important; background: none !important; } /* Error */ - .k { color: $solar-orange !important; } /* Keyword */ - .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ - .p { color: $base1 !important; } /* Operator */ - .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ - .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ - .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ - .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ - //.gr { color: #aa0000 } /* Generic.Error */ - .gh { color: $base01 !important; } /* Generic.Heading */ - .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ - .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ - //.go { color: #888888 } /* Generic.Output */ - //.gp { color: #555555 } /* Generic.Prompt */ - .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ - .gu { color: $solar-violet !important; } /* Generic.Subheading */ - //.gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ - .kd { color: $solar-blue !important; } /* Keyword.Declaration */ - .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ - .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ - .kt { color: $solar-cyan !important; } /* Keyword.Type */ - .n { color: $solar-blue !important; } - .na { color: $solar-blue !important; } /* Name.Attribute */ - .nb { color: $solar-green !important; } /* Name.Builtin */ - .nc { color: $solar-magenta !important;} /* Name.Class */ - .no { color: $solar-yellow !important; } /* Name.Constant */ - //.ni { color: #800080 } /* Name.Entity */ - .nl { color: $solar-green !important; } - .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ - .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ - .nn { color: $solar-yellow !important; } /* Name.Namespace */ - .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ - .nx { color: $solar-yellow !Important; } - //.bp { color: #999999 } /* Name.Builtin.Pseudo */ - //.vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: $solar-blue !important; } /* Name.Variable.Global */ - .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ - .nv { color: $solar-blue !important; } /* Name.Variable */ - //.w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ - .m { color: $solar-cyan !important; } /* Literal.Number */ - .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ - .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ - //.mo { color: #009999 } /* Literal.Number.Oct */ - .s { color: $solar-cyan !important; } /* Literal.String */ - //.sb { color: #d14 } /* Literal.String.Backtick */ - //.sc { color: #d14 } /* Literal.String.Char */ - .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ - .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ - .se { color: $solar-red !important; } /* Literal.String.Escape */ - //.sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: $solar-blue !important; } /* Literal.String.Interpol */ - //.sx { color: #d14 } /* Literal.String.Other */ - .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ - .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ - //.ss { color: #990073 } /* Literal.String.Symbol */ - //.il { color: #009999 } /* Literal.Number.Integer.Long */ - div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} -} - -.highlight, .gist-highlight { - pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } - margin-bottom: 1.8em; - background: $base03; - overflow-y: hidden; - overflow-x: auto; -} - -$solar-scroll-bg: rgba(#fff, .15); -$solar-scroll-thumb: rgba(#fff, .2); -@if $solarized == light { - $solar-scroll-bg: rgba(#000, .15); - $solar-scroll-thumb: rgba(#000, .15); -} - -pre, .highlight, .gist-highlight { - &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } - &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } -} - -.highlight code { - @extend .pre-code; background: #000; -} -figure.code { - background: none; - padding: 0; - border: 0; - margin-bottom: 1.5em; - pre { margin-bottom: 0; } - figcaption { - position: relative; - @extend .code-title; - a { @extend .download-source; } - } - .highlight { - margin-bottom: 0; - } -} - -.code-title { - text-align: center; - font-size: 13px; - line-height: 2em; - text-shadow: #cbcccc 0 1px 0; - color: #474747; - font-weight: normal; - margin-bottom: 0; - @include border-top-radius(5px); - font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; - background: #aaaaaa image-url("code_bg.png") top repeat-x; - border: 1px solid #565656; - border-top-color: #cbcbcb; - border-left-color: #a5a5a5; - border-right-color: #a5a5a5; - border-bottom: 0; -} - -.download-source { - position: absolute; right: .8em; - @include hover-link; - color: #666 !important; - z-index: 1; - font-size: 13px; - text-shadow: #cbcccc 0 1px 0; - padding-left: 3em; -} diff --git a/sass/partials/sidebar/_base.scss b/sass/partials/sidebar/_base.scss deleted file mode 100644 index 5441304..0000000 --- a/sass/partials/sidebar/_base.scss +++ /dev/null @@ -1,106 +0,0 @@ -.side-shadow-border { - @include box-shadow(lighten($sidebar-bg, 5) 0 1px); -} -aside.sidebar { - overflow: hidden; - color: $sidebar-color; - text-shadow: lighten($sidebar-bg, 8) 0 1px; - a { @extend .force-wrap; } - section { - @extend .sans; - font-size: .8em; - line-height: 1.4em; - margin-bottom: 1.5em; - h1 { - margin: 1.5em 0 0; - padding-bottom: .2em; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - + p { - padding-top: .4em; - } - } - } - img { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box($border: #fff .3em solid); - } - ul { - margin-bottom: 0.5em; - margin-left: 0; - } - li { - list-style: none; - padding: .5em 0; - margin: 0; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - p:last-child { - margin-bottom: 0; - } - } - a { - color: inherit; - @include transition(color .5s); - } - &:hover a { - color: $sidebar-link-color; - &:hover { color: $sidebar-link-color-hover; } - } -} -.aside-alt-link { - color: $sidebar-link-color-subdued; - &:hover { - color: $sidebar-link-color-subdued-hover; - } -} - -@media only screen and (min-width: 768px) { - .toggle-sidebar { - outline: none; - position: absolute; right: -10px; top: 0; bottom: 0; - display: inline-block; - text-decoration: none; - color: mix($text-color-light, $sidebar-bg); - width: 9px; - cursor: pointer; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - @include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0))); - } - &:after { - position: absolute; right: -11px; top: 0; - width: 20px; - font-size: 1.2em; - line-height: 1.1em; - padding-bottom: .15em; - @include border-bottom-right-radius(.3em); - text-align: center; - background: $main-bg $noise-bg; - border-bottom: 1px solid $sidebar-border; - border-right: 1px solid $sidebar-border; - content: "\00BB"; - text-indent: -1px; - } - .collapse-sidebar & { - text-indent: 0px; - right: -20px; - width: 19px; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - } - &:after { - border-left: 1px solid $sidebar-border; - text-shadow: #fff 0 1px; - content: "\00AB"; - left: 0px; right: 0; - text-align: center; - text-indent: 0; - border: 0; - border-right-width: 0; - background: none; - } - } - } -} diff --git a/sass/partials/sidebar/_delicious.scss b/sass/partials/sidebar/_delicious.scss deleted file mode 100644 index e962702..0000000 --- a/sass/partials/sidebar/_delicious.scss +++ /dev/null @@ -1,4 +0,0 @@ -.delicious-posts { - a.delicious-link { margin-bottom: .5em; display: block; } - p { font-size: 1em; } -} diff --git a/sass/partials/sidebar/_googleplus.scss b/sass/partials/sidebar/_googleplus.scss deleted file mode 100644 index c2a693e..0000000 --- a/sass/partials/sidebar/_googleplus.scss +++ /dev/null @@ -1,26 +0,0 @@ -.googleplus { - h1 { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - -o-box-shadow: none !important; - box-shadow: none !important; - border-bottom: 0px none !important; - } - a { - text-decoration: none; - white-space: normal !important; - line-height: 32px; - - img { - float: left; - margin-right: 0.5em; - border: 0 none; - } - } -} - -.googleplus-hidden { - position: absolute; - top: -1000em; - left: -1000em; -} diff --git a/sass/partials/sidebar/_pinboard.scss b/sass/partials/sidebar/_pinboard.scss deleted file mode 100644 index 9f9ab46..0000000 --- a/sass/partials/sidebar/_pinboard.scss +++ /dev/null @@ -1,12 +0,0 @@ -#pinboard_linkroll { - .pin-title, .pin-description { - display: block; - margin-bottom: .5em; - } - .pin-tag { - @include hover-link; - @extend .aside-alt-link; - &:after { content: ','; } - &:last-child:after { content: ''; } - } -} diff --git a/sass/plugins/_plugins.scss b/sass/plugins/_plugins.scss deleted file mode 100644 index 3b4ba0b..0000000 --- a/sass/plugins/_plugins.scss +++ /dev/null @@ -1,6 +0,0 @@ -/* - Add plugin stylesheets to this directory and they will be automatically - Imported. Load order is alphabetical and styles can be overriden in - custom/_style.scss which is loaded after all plugin stylesheets. -*/ - diff --git a/sass/screen.scss b/sass/screen.scss deleted file mode 100644 index 75eac0a..0000000 --- a/sass/screen.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import "compass"; -@include global-reset; - -@import "custom/colors"; -@import "custom/fonts"; -@import "custom/layout"; -@import "base"; -@import "partials"; -@import "plugins/**/*"; -@import "custom/styles"; diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..0bd0490 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,231 @@ + + + + http://devopsysadmin.github.io/blog/2015/10/13/from-debian-to-arch-not-as-difficult/ + 2015-10-13T20:40:20+02:00 + + + http://devopsysadmin.github.io/blog/2015/02/23/passwords-con-caracteres-aleatorios/ + 2015-02-23T16:01:00+01:00 + + + http://devopsysadmin.github.io/blog/2015/02/19/sendlines-un-expect-simplificado/ + 2015-02-19T17:17:00+01:00 + + + http://devopsysadmin.github.io/blog/2015/02/17/truco-hacer-un-pgdump-aprovechando-los/ + 2015-02-17T16:06:00+01:00 + + + http://devopsysadmin.github.io/blog/2015/02/17/recuperando-el-blog/ + 2015-02-17T15:24:00+01:00 + + + http://devopsysadmin.github.io/blog/2009/02/14/kde-50-lanzado/ + 2009-02-14T12:48:00+01:00 + + + http://devopsysadmin.github.io/blog/2009/02/08/repositorio-para-testingamd64/ + 2009-02-08T00:51:00+01:00 + + + http://devopsysadmin.github.io/blog/2009/01/14/critica-humoristica-wine/ + 2009-01-14T15:30:00+01:00 + + + http://devopsysadmin.github.io/blog/2009/01/14/nokia-anade-la-licencia-lgpl-qt/ + 2009-01-14T12:31:00+01:00 + + + http://devopsysadmin.github.io/blog/2008/11/14/avidemux/ + 2008-11-14T16:52:00+01:00 + + + http://devopsysadmin.github.io/blog/2008/11/07/estado-actual-de-k3b/ + 2008-11-07T23:17:00+01:00 + + + http://devopsysadmin.github.io/blog/2008/11/07/objetivos-y-mejoras-de-kde-42/ + 2008-11-07T20:20:00+01:00 + + + http://devopsysadmin.github.io/blog/2008/10/31/qt-creator-un-posible-rad-para-qtkde/ + 2008-10-31T16:46:00+01:00 + + + http://devopsysadmin.github.io/blog/2008/10/22/kde-42-los-mensajes-emergentes/ + 2008-10-22T11:17:00+02:00 + + + http://devopsysadmin.github.io/blog/2008/09/24/virtualbox-20-tambien-es-qt4/ + 2008-09-24T22:52:00+02:00 + + + http://devopsysadmin.github.io/blog/2008/09/22/vlc-092-con-interfaz-qt4/ + 2008-09-22T23:01:00+02:00 + + + http://devopsysadmin.github.io/blog/2008/09/10/vuelta-debian/ + 2008-09-10T18:48:00+02:00 + + + http://devopsysadmin.github.io/blog/2008/05/01/kde-41-ya-tiene-una-alfa/ + 2008-05-01T13:28:00+02:00 + + + http://devopsysadmin.github.io/blog/2008/01/03/kde-40-no-es-kde4/ + 2008-01-03T12:25:00+01:00 + + + http://devopsysadmin.github.io/blog/2007/11/30/lo-que-nos-traera-kubuntu-hardy/ + 2007-11-30T12:24:00+01:00 + + + http://devopsysadmin.github.io/blog/2007/10/24/los-drivers-de-ati-listos-para-su-uso/ + 2007-10-24T13:24:00+02:00 + + + http://devopsysadmin.github.io/blog/2007/04/10/kubuntu-70-gutsy-gibbon-tribe-4/ + 2007-04-10T13:23:00+02:00 + + + http://devopsysadmin.github.io/blog/2006/06/07/iconos-oxygen-en-kde-35x/ + 2006-06-07T13:22:00+02:00 + + + http://devopsysadmin.github.io/blog/2006/05/17/kreo-k-hestoi-listo-xa-canviar-linus/ + 2006-05-17T13:21:00+02:00 + + + http://devopsysadmin.github.io/blog/2006/03/07/28-pautas-para-reforzar-tu-servidor/ + 2006-03-07T12:21:00+01:00 + + + http://devopsysadmin.github.io/blog/2006/01/16/instalador-de-ubuntu-para-windows/ + 2006-01-16T12:15:00+01:00 + + + http://devopsysadmin.github.io/blog/2005/12/01/la-de-microsoft/ + 2005-12-01T12:14:00+01:00 + + + http://devopsysadmin.github.io/blog/2005/11/29/una-semana/ + 2005-11-29T12:14:00+01:00 + + + http://devopsysadmin.github.io/blog/2005/11/27/kubuntu-es-en-obras/ + 2005-11-27T12:13:00+01:00 + + + http://devopsysadmin.github.io/blog/2005/10/22/edgy-rc1/ + 2005-10-22T13:13:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/10/19/de-primeras-con-edgy/ + 2005-10-19T13:13:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/09/13/acelerando-que-es-xgerundio/ + 2005-09-13T13:12:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/09/07/kubuntu-es-vuelta-la-vida-y-van/ + 2005-09-07T13:12:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/07/25/el-five-de-lo-que-linux-deberia-aprender/ + 2005-07-25T13:09:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/06/23/diversificacion-y-estandares/ + 2005-06-23T13:07:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/06/14/informatico-ezoque/ + 2005-06-14T13:06:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/05/16/kubuntu-es-reabierta/ + 2005-05-16T13:06:00+02:00 + + + http://devopsysadmin.github.io/blog/2005/01/14/kubuntu-es-mas-cerca-de-su-presentacion/ + 2005-01-14T12:05:00+01:00 + + + http://devopsysadmin.github.io/blog/2005/01/03/emisoras-de-radio-en-amarok/ + 2005-01-03T12:05:00+01:00 + + + http://devopsysadmin.github.io/pages/ + + + http://devopsysadmin.github.io/ + + + http://devopsysadmin.github.io/blog/archives/ + + + http://devopsysadmin.github.io/pages/nginx-snippets.html + + + http://devopsysadmin.github.io/blog/categories/linux/ + + + http://devopsysadmin.github.io/blog/categories/debian/ + + + http://devopsysadmin.github.io/blog/categories/testing/ + + + http://devopsysadmin.github.io/blog/categories/kde/ + + + http://devopsysadmin.github.io/blog/categories/escritorio/ + + + http://devopsysadmin.github.io/blog/categories/trolltech/ + + + http://devopsysadmin.github.io/blog/categories/qt/ + + + http://devopsysadmin.github.io/blog/categories/programacion/ + + + http://devopsysadmin.github.io/blog/categories/grabacion/ + + + http://devopsysadmin.github.io/blog/categories/k3b/ + + + http://devopsysadmin.github.io/blog/categories/video/ + + + http://devopsysadmin.github.io/blog/categories/edicion/ + + + http://devopsysadmin.github.io/blog/categories/videojuegos/ + + + http://devopsysadmin.github.io/blog/categories/trucos/ + + + http://devopsysadmin.github.io/blog/categories/postgresql/ + + + http://devopsysadmin.github.io/blog/categories/automatizacion/ + + + http://devopsysadmin.github.io/blog/categories/python/ + + + http://devopsysadmin.github.io/blog/categories/password/ + + + http://devopsysadmin.github.io/blog/categories/arch/ + + + http://devopsysadmin.github.io/blog/categories/manjaro/ + + diff --git a/source/_includes/after_footer.html b/source/_includes/after_footer.html deleted file mode 100644 index 08b8e34..0000000 --- a/source/_includes/after_footer.html +++ /dev/null @@ -1,5 +0,0 @@ -{% include disqus.html %} -{% include facebook_like.html %} -{% include google_plus_one.html %} -{% include twitter_sharing.html %} -{% include custom/after_footer.html %} diff --git a/source/_includes/archive_post.html b/source/_includes/archive_post.html deleted file mode 100644 index 5c8868d..0000000 --- a/source/_includes/archive_post.html +++ /dev/null @@ -1,9 +0,0 @@ -{% capture category %}{{ post.categories | size }}{% endcapture %} -

-{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- -{% if category != '0' %} -
- En {{ post.categories | category_links }} -
-{% endif %} diff --git a/source/_includes/article.html b/source/_includes/article.html deleted file mode 100644 index 6f32995..0000000 --- a/source/_includes/article.html +++ /dev/null @@ -1,46 +0,0 @@ -{% unless page.no_header %} -
- - {% if index %} -

-
- {{post.date | date: "%b"}} {{post.date | date: "%-d"}} - {{post.date | date: "%y"}} - {{post.date | date: "%H:%M"}} -
- - - {% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- {% else %} -

-
- {{page.date | date: "%b"}} {{page.date | date: "%-d"}} - {{page.date | date: "%y"}} - {{page.date | date: "%H:%M"}} -
- - {% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} -

- {% endif %} - {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} - Comments - {% endif %} - {% unless page.meta == false %} -

- {% include post/date.html %} -

- {% endunless %} -
-{% endunless %} -{% if index %} -
{{ content | excerpt }}
- {% capture excerpted %}{{ content | has_excerpt }}{% endcapture %} - {% if excerpted == 'true' %} - - {% endif %} -{% else %} -
{{ content }}
-{% endif %} diff --git a/source/_includes/asides/delicious.html b/source/_includes/asides/delicious.html deleted file mode 100644 index 115cdcb..0000000 --- a/source/_includes/asides/delicious.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if site.delicious_user %} -
-

On Delicious

-
- -

My Delicious Bookmarks »

-
-{% endif %} \ No newline at end of file diff --git a/source/_includes/asides/github.html b/source/_includes/asides/github.html deleted file mode 100644 index 1761276..0000000 --- a/source/_includes/asides/github.html +++ /dev/null @@ -1,30 +0,0 @@ -{% if site.github_user %} -
-

En GitHub

-
    -
  • Status updating...
  • -
- {% if site.github_show_profile_link %} - @{{site.github_user}} on GitHub - {% endif %} - - -
-{% endif %} diff --git a/source/_includes/asides/googleplus.html b/source/_includes/asides/googleplus.html deleted file mode 100644 index 00a0aa8..0000000 --- a/source/_includes/asides/googleplus.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.googleplus_user %} -
-

- - - Google+ - -

-
-{% endif %} - diff --git a/source/_includes/asides/pinboard.html b/source/_includes/asides/pinboard.html deleted file mode 100644 index c89c3e7..0000000 --- a/source/_includes/asides/pinboard.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if site.pinboard_user %} -
-

My Pinboard

-
    Fetching linkroll...
-

My Pinboard Bookmarks »

-
- -{% endif %} diff --git a/source/_includes/asides/recent_posts.html b/source/_includes/asides/recent_posts.html deleted file mode 100644 index a465f83..0000000 --- a/source/_includes/asides/recent_posts.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

Artículos Recientes

- -
diff --git a/source/_includes/custom/after_footer.html b/source/_includes/custom/after_footer.html deleted file mode 100644 index bce25dd..0000000 --- a/source/_includes/custom/after_footer.html +++ /dev/null @@ -1,3 +0,0 @@ -{% comment %} - Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example) -{% endcomment %} diff --git a/source/_includes/custom/asides/about.html b/source/_includes/custom/asides/about.html deleted file mode 100644 index 59d309e..0000000 --- a/source/_includes/custom/asides/about.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

About Me

-

A little something about me.

-
diff --git a/source/_includes/custom/asides/category_cloud.html b/source/_includes/custom/asides/category_cloud.html deleted file mode 100644 index a1da375..0000000 --- a/source/_includes/custom/asides/category_cloud.html +++ /dev/null @@ -1,13 +0,0 @@ -
-

Nube de Tags

-{% assign sorted_categories = (site.categories | sort:0) %} -{% for category in sorted_categories %} - {% assign tag_size = category|last|size|plus:10 %} - {% if tag_size > 22 %} - {% assign tag_size = 22 %} - {%endif%} - - {{ category | first }} - -{% endfor %} -
\ No newline at end of file diff --git a/source/_includes/custom/category_feed.xml b/source/_includes/custom/category_feed.xml deleted file mode 100644 index 8c93ed3..0000000 --- a/source/_includes/custom/category_feed.xml +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: null ---- - - - - <![CDATA[{% if site.titlecase %}{{ page.title | titlecase | cdata_escape }}{% else %}{{ page.title | cdata_escape }}{% endif %} | {{ site.title | cdata_escape }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.categories[page.category] limit: 5 %} - - <![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/source/_includes/custom/footer.html b/source/_includes/custom/footer.html deleted file mode 100644 index ca1b62a..0000000 --- a/source/_includes/custom/footer.html +++ /dev/null @@ -1,4 +0,0 @@ -

- Copyleft {{ site.time | date: "%Y" }} - {{ site.author }} - - Powered by Octopress -

diff --git a/source/_includes/custom/head.html b/source/_includes/custom/head.html deleted file mode 100644 index 824a41e..0000000 --- a/source/_includes/custom/head.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/source/_includes/custom/header.html b/source/_includes/custom/header.html deleted file mode 100644 index 35f9c05..0000000 --- a/source/_includes/custom/header.html +++ /dev/null @@ -1,6 +0,0 @@ -
-

{{ site.title }}

- {% if site.subtitle %} -

{{ site.subtitle }}

- {% endif %} -
diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html deleted file mode 100644 index 26738c4..0000000 --- a/source/_includes/custom/navigation.html +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/source/_includes/disqus.html b/source/_includes/disqus.html deleted file mode 100644 index 49c6a29..0000000 --- a/source/_includes/disqus.html +++ /dev/null @@ -1,21 +0,0 @@ -{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %} -{% if site.disqus_short_name and page.comments != false %} - -{% endif %} diff --git a/source/_includes/facebook_like.html b/source/_includes/facebook_like.html deleted file mode 100644 index 808c6b6..0000000 --- a/source/_includes/facebook_like.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.facebook_like %} -
- -{% endif %} diff --git a/source/_includes/footer.html b/source/_includes/footer.html deleted file mode 100644 index 3a8c768..0000000 --- a/source/_includes/footer.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/footer.html %} diff --git a/source/_includes/google_analytics.html b/source/_includes/google_analytics.html deleted file mode 100644 index 4d4d596..0000000 --- a/source/_includes/google_analytics.html +++ /dev/null @@ -1,13 +0,0 @@ -{% if site.google_analytics_tracking_id %} - -{% endif %} diff --git a/source/_includes/google_plus_one.html b/source/_includes/google_plus_one.html deleted file mode 100644 index 32c4c4f..0000000 --- a/source/_includes/google_plus_one.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.google_plus_one %} - - -{% endif %} diff --git a/source/_includes/head.html b/source/_includes/head.html deleted file mode 100644 index 3d2cc88..0000000 --- a/source/_includes/head.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - {% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }} - - - {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} - - {% if page.keywords %}{% endif %} - - - - - - - {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' }}{% endif %}{% endcapture %} - - - - - - - - - {% include custom/head.html %} - {% include google_analytics.html %} - diff --git a/source/_includes/header.html b/source/_includes/header.html deleted file mode 100644 index 524de65..0000000 --- a/source/_includes/header.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/header.html %} diff --git a/source/_includes/navigation.html b/source/_includes/navigation.html deleted file mode 100644 index b1fce3f..0000000 --- a/source/_includes/navigation.html +++ /dev/null @@ -1,15 +0,0 @@ -
    -
  • RSS
  • - {% if site.subscribe_email %} -
  • Email
  • - {% endif %} -
- {% if site.simple_search %} -
-
- - -
-
- {% endif %} -{% include custom/navigation.html %} diff --git a/source/_includes/post/author.html b/source/_includes/post/author.html deleted file mode 100644 index ea8fd95..0000000 --- a/source/_includes/post/author.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if post.author %} - {% assign author = post.author %} -{% elsif page.author %} - {% assign author = page.author %} -{% else %} - {% assign author = site.author %} -{% endif %} -{% if author %}{% endif %} diff --git a/source/_includes/post/categories.html b/source/_includes/post/categories.html deleted file mode 100644 index 4a98b29..0000000 --- a/source/_includes/post/categories.html +++ /dev/null @@ -1,10 +0,0 @@ -{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} -{% unless category == '0' %} - - {% if post %} - {{ post.categories | category_links }} - {% else %} - {{ page.categories | category_links }} - {% endif %} - -{% endunless %} diff --git a/source/_includes/post/date.html b/source/_includes/post/date.html deleted file mode 100644 index a86953c..0000000 --- a/source/_includes/post/date.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if page.date %}{% capture time %}{{ page.date_time_html }}{% endcapture %}{% endif %} -{% if post.date %}{% capture time %}{{ post.date_time_html }}{% endcapture %}{% endif %} - -{% if page.updated %}{% capture updated %}{{ page.date_time_updated_html }}{% endcapture %}{% endif %} -{% if post.updated %}{% capture updated %}{{ post.date_time_updated_html }}{% endcapture %}{% endif %} diff --git a/source/_includes/post/disqus_thread.html b/source/_includes/post/disqus_thread.html deleted file mode 100644 index b1acd8c..0000000 --- a/source/_includes/post/disqus_thread.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/source/_includes/post/sharing.html b/source/_includes/post/sharing.html deleted file mode 100644 index 809968f..0000000 --- a/source/_includes/post/sharing.html +++ /dev/null @@ -1,26 +0,0 @@ - -
\ No newline at end of file diff --git a/source/_includes/twitter_sharing.html b/source/_includes/twitter_sharing.html deleted file mode 100644 index 367a42e..0000000 --- a/source/_includes/twitter_sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.twitter_follow_button or site.twitter_tweet_button %} - -{% endif %} diff --git a/source/_layouts/category_index.html b/source/_layouts/category_index.html deleted file mode 100644 index 85a6307..0000000 --- a/source/_layouts/category_index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -footer: false ---- - -
-{% for post in site.categories[page.category] %} -{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} -{% unless year == this_year %} - {% assign year = this_year %} -

{{ year }}

-{% endunless %} -
- {% include archive_post.html %} -
-{% endfor %} -
diff --git a/source/_layouts/default.html b/source/_layouts/default.html deleted file mode 100644 index f23b07b..0000000 --- a/source/_layouts/default.html +++ /dev/null @@ -1,14 +0,0 @@ -{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %} -{% include head.html %} - -
{% include header.html %}
- -
-
- {{ content | expand_urls: root_url }} -
-
-
{% include footer.html %}
- {% include after_footer.html %} - - diff --git a/source/_layouts/page.html b/source/_layouts/page.html deleted file mode 100644 index afb716b..0000000 --- a/source/_layouts/page.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default ---- - -
-
- {% if page.title %} -
-

{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

- {% if page.date %}

{% include post/date.html %}{{ time }}

{% endif %} -
- {% endif %} - {{ content }} - {% unless page.footer == false %} -
- {% if page.date or page.author %}

- {% if page.author %}{% include post/author.html %}{% endif %} - {% include post/date.html %}{% if updated %}{{ updated }}{% else %}{{ time }}{% endif %} - {% if page.categories %}{% include post/categories.html %}{% endif %} -

{% endif %} - {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -
- {% endunless %} -
-{% if site.disqus_short_name and page.comments %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/source/_layouts/post.html b/source/_layouts/post.html deleted file mode 100644 index b450681..0000000 --- a/source/_layouts/post.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -single: true ---- - -
-
- {% include article.html %} -
-

- {% include post/author.html %} - {% include post/date.html %}{{ time }}{% if updated %} {{ updated }}{% endif %} - {% include post/categories.html %} -

- {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -

- {% if page.previous.url %} - « {{page.previous.title}} - {% endif %} - {% if page.next.url %} - {{page.next.title}} » - {% endif %} -

-
-
-{% if site.disqus_short_name and page.comments == true %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/source/_posts/2005-01-03-emisoras-de-radio-en-amarok.html b/source/_posts/2005-01-03-emisoras-de-radio-en-amarok.html deleted file mode 100644 index 200aaca..0000000 --- a/source/_posts/2005-01-03-emisoras-de-radio-en-amarok.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Emisoras de radio en amaroK -date: '2005-01-03T03:05:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.651-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-9070601885192676469 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/01/emisoras-de-radio-en-amarok.html ---- - -Hace ya un tiempo hice una entrada en el diario de KDE Hispano indicando cómo agregar enlaces asx a amarok. Para no repetirme y tenerlo más organizado, apuntaré aquí los enlaces a las distintas cadenas.
\ No newline at end of file diff --git a/source/_posts/2005-01-14-kubuntu-es-mas-cerca-de-su-presentacion.html b/source/_posts/2005-01-14-kubuntu-es-mas-cerca-de-su-presentacion.html deleted file mode 100644 index b7f6eb8..0000000 --- a/source/_posts/2005-01-14-kubuntu-es-mas-cerca-de-su-presentacion.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kubuntu-es, más cerca de su presentación -date: '2005-01-14T03:05:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.663-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-1183945075201908485 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/01/kubuntu-es-mas-cerca-de-su-presentacion.html ---- - -Ayer por la tarde, Rouzic y yo nos pusimos de acuerdo en lo que iba a ser el estilo final de Kubuntu-es. Y es que no hay nada mejor que tener un objetivo común y ganas de cooperar en grupo. Ahora mismo no puedo adjuntar una captura de pantalla del sitio web, pero puedo decir que utilizará los estilizados azules de Kubuntu y el orden y facilidad de navegación de kubuntu.de. Esperemos que tarde poco en adecuar el sistema, mayormente porque ya tengo unos cuantos how-to's listos para colgar :) Voy a proponer que la página se cuelgue justo el mismo día que la aparición de Dapper (estable), para darle así un poco de bombo a la cosa y que parezca que ha sido algo venido del sitio oficial. ACTUALIZACION 20/01/06 - Rouzic se me ha adelantado y ya ha colgado la página. La teneis lista en http://kubuntu-es.org. \ No newline at end of file diff --git a/source/_posts/2005-05-16-kubuntu-es-reabierta.html b/source/_posts/2005-05-16-kubuntu-es-reabierta.html deleted file mode 100644 index 0ebae73..0000000 --- a/source/_posts/2005-05-16-kubuntu-es-reabierta.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kubuntu-es reabierta -date: '2005-05-16T04:06:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.675-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-9078513124490195934 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/05/kubuntu-es-reabierta.html ---- - -También antes de la salida de dapper, como ocurriera en su versión anterior, ha sido re-reabierta kubuntu-es. Bueno, como re-reabrir queda un poco mal, diremos que ha salido la versión 2.0. El parecido con la original ha sido la prima de esta versión, manejando sus juegos de colores y agregando el icono de la ruedecita de kubuntu.de para los menús. Parece que algún admin no ha querido recordar esa prima (o no ha sabido que existía tal) a la hora de implementar las opciones disponibles, ya que, una tarde, felizmente yo viajando por la página, me encuentro opciones arriba, a la izquierda y a la derecha. El cabreo que pillé fue de impresión. ¿Tanta leche con que tiene que ser fiel a la original, para que me pongan un p*to menú a la derecha? Afortunadamente en poco tiempo apareció Rouzic por MSN. Hablé con él y, tras indicarme que no había puesto él tales opciones, y menos a ese lado de la página, las recoloqué todas a mano izquierda. Hombre, es que uno se dedica a modificar temitas del drupal para que luego te venga otro, y crea que faltan cosas y las ponga a su gusto... Esto suele ocurrir cuando no se tiene concretado el trabajo en equipo. Tener un esquema y seguirlo es más efectivo, ya que uno no entra y le chafa el trabajo al otro. En fin, la página ha tenido su éxito nada más resurgir, y espero que dapper mejore su soporte para AMD64 en su versión estable, porque ahora mismo deja mucho que desear. \ No newline at end of file diff --git a/source/_posts/2005-06-14-informatico-ezoque.html b/source/_posts/2005-06-14-informatico-ezoque.html deleted file mode 100644 index 1ac63d0..0000000 --- a/source/_posts/2005-06-14-informatico-ezoque.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: "¿Informático? ¿ezoqué?" -date: '2005-06-14T04:06:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.691-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-7479690529808061437 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/06/informatico-ezoque.html ---- - -¿Por qué he puesto semejante título? Muy sencillo: los estudiantes/currantes de informática (ojo, gente con conocimiento, no pardillos que se echan las flores al hombro por configurar el emule y hacer que funcione el crack para el Fifa 2006) estamos infravalorados por las empresas.

Recogiendo un enlace de meneame: Cuando hay un problema informático las empresas acuden a los... amigos Aún cuando la avería es grave, los gestores de las pymes se resisten a tener un equipo de mantenimiento y llaman a conocidos o a tiendas de informática. En la mayoría de las pymes se desconfía de las empresas de mantenimiento informático, de ahí que, según datos del estudio Actualizer, decidan recurrir a un amigo o a la tienda en la que compraron los ordenadores para arreglar una incidencia técnica. A pesar de que el 85% de las pymes tiene acceso a Internet, no se lanzan a contratar un plan de asistencia informática por malas experiencias previas. Los principales problemas son: virus, desconfiguración de las impresoras y lentitud del ordenador. Los amigos informáticos están hartos de que sus conocidos les reclamen para arreglar sus problemas y a veces ponen excusas para no ir en su ayuda. "No escuchan y no dan ni las gracías".

Efectivamente. Ni escuchan los consejos, ni dan las gracias. Rouzic en su día mencionó una frase que viene al dedo: "¿Para aprender a manejar un coche no vas a la autoescuela? Entonces, ¿por qué esperas que para manejar un ordenador te salga todo solo o, en su defecto, tengas a mano el teléfono del 'amigo informático' ?". Muchos de nosotros echamos una mano a los amigos precisamente por eso, porque son amigos. No se nos está haciendo un favor arreglando gratuitamente una máquina a la que no se ha tenido cuidado. Y tampoco se nos agradece, todo lo más una sonrisita que casi nos hace pensar en el dinero que se ha ahorrado nuestro supuesto amigo. Haced el favor, cuando compreis un ordenador no espereis que sea "enchufar y listo". Si os lo venden así, MIENTEN. Un PC no es una lavadora, no es una nevera, no es una TV. No es una máquina dedicada a una tarea, requiere unos cuidados más allá de la limpieza de polvo y mantenimiento de las piezas. Requiere que cuidemos el software y los datos que en él instalemos. Hagamos un símil: eres el jefe de una pequeña empresa y contratas a alguien polivalente, esto es, ha sido informático, electrónico, contable, intérprete y traductor de alemán, inglés y francés, y encima abogado. Toda una joya, ¿no? Vale, ¿y qué pasaría si lo tuvieras intentando sacarle rendimiento 24 horas al día, 7 días a la semana, con un salario miserable (por no decir "de becario") y con un trato que roza la ilegitimidad de los derechos humanos? Efectivamente, que esa joya de persona se harta y deja de trabajar como es debido. Obviamente, no podemos comparar a día de hoy un PC con una persona, pero sí la actitud de este jefe de empresa. Un PC es una máquina compleja, de cuidado complejo, y cuyos cuidadores (informáticos o pre-informáticos) son infravalorados debido a que está "el amiguito que consigue gratis el ófis" que, naturalmente, cobra mucho menos aún a sabiendas de que ha sobrepasado la línea de la ilegalidad. Señoras y señores, admitámoslo: valoramos el precio por encima de la calidad. No sabemos lo que hay dentro de nuestros equipos, y no nos importa mientras "el amigo que sabe de informática" nos resuelva los problemas rápidamente y sin tener que pagar a alguien cualificado. Curiosamente, luego nos piden doscientas mil certificaciones, quince años de experiencia en cada sector, ser menor de 25 años y carnet de saber conducir hasta jamelgos con esquizofrenia paranoide. ¿Para qué tanto título, si luego sólo soy "el amigo que sabe de informática"? Por cierto, que parece ser que he sido imbuído por el espíritu del pringao-howto, ya que algunas líneas han sido quasi-copiadas de él, imagino que porque no ha parado de ocurrirme en esta vida.

Remito el original para quien tenga ganas de echarse unas risas (sarcásticas, naturalmente). \ No newline at end of file diff --git a/source/_posts/2005-06-23-diversificacion-y-estandares.html b/source/_posts/2005-06-23-diversificacion-y-estandares.html deleted file mode 100644 index e3410ea..0000000 --- a/source/_posts/2005-06-23-diversificacion-y-estandares.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Diversificación y estándares -date: '2005-06-23T04:07:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.703-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-8687437261036748558 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/06/diversificacion-y-estandares.html ---- - -Como usuario de linux que soy, y venido anteriormente de un mundo Windows, me encuentro con una serie de incomodidades que, aunque fáciles de resolver (para mí), creo que deberían dejar de existir. Y no me refiero al tema de las licencias (como los mp3, por ejemplo), que también lo podría mencionar, sino al exceso de diversificación de las distribuciones linux. Tenemos Red Hat (empresa/servidor) y su pequeña Fedora (workstation/casa), Mandriva, Novell-SuSE, Debian/Ubuntu/Knoppix ... ¡Buf! ¿Y qué hace el usuario? ¿Cómo se le puede convencer a un usuario acerca de la distribución más adecuada a sus necesidades? ¿Y cómo se le convence de desinstalar todo y volver a instalar cuando estas necesidades han cambiado? Para este tipo de situaciones se generan acuerdos, consensos y, en consecuencia, estándares. Uno de ellos es la LSB (Linux Standard Base).

Pero no es suficiente: la paquetería es distinta, y, cuando no lo es, se recomienda no mezclar paquetes de distintos orígenes (caso por ejemplo de Red Hat/Mandriva/SuSE o Debian/Ubuntu). En el caso de Windows es fácil: está preparado para Windows, sí o sí. Que lo esté para sus distintas versiones es aparte, pero al menos las versiones de Windows tienen un periodo de vida que permite la readaptación paulatina.

Pero, ¿qué pasa cuando un informático recomienda Mandriva "para empezar" y luego Red Hat/Fedora "para cosas más serias"? Que el usuario vuelve a encontrarse con el infierno de las dependencias, del cambio de nombre entre paquetes, de las versiones de núcleo y no-núcleo, etc. Bien, volviendo al tema de los estándares: tenemos trabajo. Mucho trabajo. Uno no puede estar pensando en qué distribución es la mejor o la más adecuada (la gente suele mirar más lo primero que lo segundo), sino que funcione el ordenador para lo que lo compró, y algo más. Salen nuevas versiones y distribuciones de Linux cada poco, cada TAN poco que resulta confuso.

Para muestra, un botón: le conté a mi churri que iba a sustituir Fedora por Kubuntu en mi ordenador, y me dijo "ah, pero ¿no te lo habías instalado hace poco?" Efectivamente, no tenía ni dos semanas instalada Fedora, y, aunque me gustara mucho su acabado, echaba de menos el sistema APT de Debian. Tuve que explicarle que Linux es sólo el núcleo, y que luego está la serie de programas que funcionan bajo ese núcleo, que debido al enfoque de cada empresa para el sector al que quisiera destinar el producto, se realizan recopilaciones o "distros" que cumplen (o intentan) los objetivos de dicho enfoque.

"¿Y no puede haber un Linux Home, un Pro y un Server?" Una pregunta tan sencilla que tapa la boca. Naturalmente que hay distros que cumplen ese cometido, pero se reparten tanto-tantísimo el mercado actual, que la confusión crece por el temor de no haber elegido la correcta.

Rezo por el día en que se dejen de hacer tantas distros como formas de pensar, que se aúnen esfuerzos y que luego sí, se hagan las personalizaciones/enfoques que se quieran, gracias al uso de software libre. Pero por el amor de Dios, unamos esfuerzos y ahorremos energías, que si queremos un escritorio de calidad que compita con los comerciales, lo que estamos haciendo es el primo.

Ea, uníos a Kubuntu :P \ No newline at end of file diff --git a/source/_posts/2005-07-25-el-five-de-lo-que-linux-deberia-aprender.html b/source/_posts/2005-07-25-el-five-de-lo-que-linux-deberia-aprender.html deleted file mode 100644 index 4f1c122..0000000 --- a/source/_posts/2005-07-25-el-five-de-lo-que-linux-deberia-aprender.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: El "top five" de lo que linux debería aprender -date: '2005-07-25T04:09:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.715-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-4157366717936086743 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/07/el-five-de-lo-que-linux-deberia-aprender.html ---- - -
Este artículo es una traducción libre del orginal en Linux Watch:

---

Linux tiene un montón de cosas buenas -- open-source, seguridad, fiabilidad -- pero está bien lejos de la perfección. De hecho, Linux y sus vendedores podrían mirar en aprender algunas cosas de Microsoft. Sí, Microsoft. ¿Como qué? Aquí está mi "top five" de cosas que Linux pudiera aprender de Microsoft.

1. MSDN Difundid la palabra: "digg" (menead) esta historia. Con Linux y el software open-source, todo el código es abierto, con lo que cualquier desarrollador puede dar el salto y empezar a trabajar. Esto es genial, pero ¿y si no sabes por dónde empezar? ¿Y si no estás del todo seguro, o no demasiado seguro, acerca de cuál es el método correcto para programar un proyecto dado? ¿Y si quieres escribir (desarrollar) algo nuevo y útil... pero descubres tras tres meses de proyecto que estás duplicando un trabajo que se ha realizado una docena de veces? No hay guías fáciles de uso de programación adecuada en open-source. Para aprender cómo hacerlo correctamente, por norma lleva un par de años averiguar las leyes del software libre. Con Microsoft, sin embargo, está el Microsoft Developer Network (MSDN). MSDN provee a los desarrolladores ayuda a escribir aplicaciones usando los productos y herramientas de programación de Microsoft. Y cuando digo ayuda, quiero decir AYUDA. Hay tutoriales bien escritos, mejores guías prácticas, las últimas betas y copias de producción de sistemas operativos y software, herramientas de desarrollo de software, ejemplos de código, comunidades on-line, artículos sin fin de los entresijos de la programación de Microsoft, y así sucesivamente. Lo mejor de todo es que está bien organizado, así que puedes aprender fácilmente lo que necesites cuando necesites aprenderlo. MSDN no es barato, pero para los desarrolladores de Microsoft vale cada céntimo que se paga. Los sitios open-source como SourceForge son muy cómodos, pero son más útiles como incubadores de proyectos que como sitios de aprendizaje. No, el open source y Linux no tienen nada que encaje con MSDN.


2. Interfaz común Cada uno tiene su propia idea de cómo construir una interfaz. Pero lo que los usuarios quieren es una interfaz común. Quieren aprender un método para hacer todas sus tareas comunes. Cuanto más les pides aprender cosas distintas para hacer lo mismo, más se enfadan. En su mayor parte, Microsoft se ha estancado en hacer evolucionar sus interficies. Si conociste Office 97, puedes moverte fácilmente con Office 2003. Y una vez que te haces con Windows 98SE, no te llevará demasiado hacerte con el XP SP2. En Linux, puede ser un salto mucho mayor de una aplicación a otra, o de KDE a Gnome a Enlightenment. Aún así, Microsoft está empezando a golpear. La interfaz de Office 12 es bastante nueva, y muchos usuarios lo ven como una molestia mayor. Paralelamente, Linux va haciendo de las suyas con el Proyecto Portland, un trabajo de equipo de todos los escritorios grandes de linux, está desarrollando no sólo APIs comunes (API: Application Programming Interface, Interfaz de Programación de Aplicación), sino también interficies comunes de usuario. Entre este año y el siguiente, Linux, y no Microsoft, tendrán la ventaja en este tema.


3. Formatos Comunes Los formatos de Microsoft Office son propietarios, pero por la presión de la demanda de mercado, se han convertido en formatos universales. Como las interficies, los formatos se han ido cambiando, pero es normalmente posible importar satisfactoriamente los formatos antiguos a los nuevos programas sin pérdida de datos. El formato ODF (Open Document Format) ofrece un cambio algo mejor. Es un formato que cualquiera puede usar y leer. El problema es que, incluso ahora, no tiene soporte suficiente. Estoy esperando el día en que Linux y todas las aplicaciones open-source puedan leer y escribir ODF. Hasta que llegue ese día, la ventaja de este formato se morirá con Linux y algunos programas open-source.


4. Marketing Una razón de peso por la que Microsoft está en la cumbre es porque pagan continuamente cientos de millones cada año de marketing y propaganda. Echad un vistazo a casi cada revista de tecnología, y vereis un cartel de Microsoft. Periódicos de la ciudad, también. Televisión, igualmente. Se puede argumentar que parte de ese dinero ha sido malgastado. Quiero decir, ¿y qué hay de esos dinosaurios de oficina? Pero, de una manera u otra, Microsoft está siempre al lado de sus clientes. No te molestes en soltar el tema de marketing por saturación. Es el motivo por el que la gente bebe Coca-Cola, compra Toyotas, aún fuma cigarrillos y sí, usa Windows. ¿Y qué hacen las compañías de Linux en el tema de los anuncios? Casi nada. Tontos. Por cada diez, incluso por cada cien anuncios de Microsoft, veo uno de Linux. ¿Por qué crees que los sitios de Linux, como éste (Linux Today), y muchos otros tienen anuncios de Microsoft? Porque Microsoft compra el espacio para el anuncio, y las compañías de Linux casi nunca lo hacen. Así de simple. Desde hace mucho, las distribuciones de Linux han vivido de los sitios de noticias Linux, sí, como éste (Linux Today), que informan de cada pequeño movimiento de Linux. Adivinad qué, chicos. Eso está bien para construir un nicho. Felicidades, funcionó. También funcionó para Amiga y OS/2, apesta para un mercado masivo y creciente. También está empezando a no funcionar. Oh, la gente lee nuestra familia de publicaciones de Linux cada mes. Estoy seguro que es cierto también para los otros espacios de Linux. Recuerdo, sin embargo, cuando la nueva generación de espacios de noticias online, como Slashdot, también hacían que Linux acapararan las portadas, y al resto las ponían como las noticias de menor importancia. Ahora, muchas grandes historias del mundo Linux ni siquiera están, ni en Slashdot ni en Digg. ¿Por qué? Porque mientras el total de usuarios de Linux está creciendo, ya no es un crecimiento brutal. Linux ya no más el más nuevo y excitante de los chicos del barrio. Los vendedores de Linux ya no cuentan más con que se lea la noticia de una nueva distribución o servicio salvo por gente que ya se ha pasado a Linux. ¿Quieres clientes nuevos? ¿Quieres clientes de Microsoft? Basta de excitaciones por poner -- oh, vaya -- una paginita o anuncio pequeño en el New York Times. Comienza a gastar cuartos en exponer el mensaje de Linux, tu mensaje, delante de los clientes, todos los días.


5. Soporte OEM Si quiero usar un escritorio Windows, simplemente compro un ordenador. Ni más ni menos. Microsoft ha tenido los OEM (Original Equipment Manufacturers) en su bolsillo por casi una década. Y ya basta. Los vendedores de Linux deben poner su granito de arena para hacer que Linux venga pre-instalado. Sí, es muy fácil instalar Xandros en un PC, pero enfrentémonos a los hechos: la mayor parte de los usuarios nunca instalarán un sistema operativo en su vida. Los usuarios usan lo que tienen delante, y no hay más. Para que el escritorio Linux siga adelante, cuando un usuario enciende el ordenador, tiene que ver arrancar Linux. Así de simple. Continúo pensando que el soporte para el escritorio Linux tiene que ser un añadido para cualquier OEM. Una vez que HP y Dell vean que hay dinero en el escritorio Linux, lo pondrán en sus equipos, y entonces (y sólo entonces), podemos hablar seriamente del llamado "año del escritorio Linux". Un problema relacionado es la eterna molestia de los controladores. Cualquier pedazo de basura de hardware tiene un controlador de Windows. Incluso hoy en día, muchos periféricos no tienen soporte en Linux. Sí, ya sé que mirando un poco y toqueteando el sistema puedes conseguir que la mayor parte del equipo funcione. ¿Cuántas personas quieren meterse en resolver este problema? No demasiada. Cuando alguien comienza a usar Linux la primera vez, y una tarjeta de sonido integrada o una tarjeta WiFi o lo que sea no funciona, ¿piensan quizá que "tío, ojalá esta gentuza diera soporte a Linux", o piensan que "vaya, Linux tiene que estar estropeado, mi trasto multimedia no funciona, y de siempre ha funcionado con Windows"? Te diré lo que piensan: piensan que Linux está estropeado. Linux nunca tendrá el soporte universal de hardware que Windows tiene, pero sus desarrolladores tienen que intentar con todas sus fuerzas e influencias acercar sus drivers al open-source lo más posible. Afortunadamente, algunos de los OEM de PC, como Dell, presionan a sus proveedores para que proporcionen controladores de Linux para sus equipos. Con más de este tipo de soporte, podremos ver a Linux acercarse finalmente a Microsoft.


Conclusión Si Linux, sus distribuidores, empresas y proveedores pueden aprender estas lecciones de parte de Microsoft, el pequeño sistema operativo del pingüino será mucho mejor de lo que es hoy en día. Sólo porque muchos fans de Linux odien Microsoft no significa que no podamos aprender algo del Impero del Mal. Podemos, y deberíamos.


---


El tema del soporte para nuevos desarrollos no lo veo tan mal como lo pinta el artículo. Es cierto que un desarrollador no tiene más remedio que ponerse a pensar en qué herramienta tiene que usar para empezar un trabajo (que si GTK2, que si QT o KDE, que si wxWindows, que si python+GTK o python+KDE...), y de los tantísimos que hay, la respuesta de los profesionales es "el que te resulte más cómodo". Pero también es cierto que en Windows había formas y formas de hacer las cosas. Si usabas Visual Basic o Visual C++, podías disponer de la API directa de Windows. Si usabas Delphi, la API te la daba aparte el programa (curiosamente, como mejor funcionaba era así).


Yo echo mucho, muchísimo de menos, una RAD (Rapid Appliation Development, Desarrollo Rápido de Aplicación) a la que vaya metiendo componentes de terceros o propios y me permitan tener una aplicación hecha en un momento y perfectamente integrada en mi entorno (KDE, para los que lo quieran saber).


En lo que a los formatos comunes se refiere, el autor debería recordar que ya hay incluso un plug-in para la lectura de ODF hasta en Office 2003. Es decir, Microsoft LE TEME al ODF. No es para menos. No se trata de cuota de mercado, se trata de estandarización: un formato libre es mucho más fácil de difundir que no uno propietario, cuyo "padre" tiene que ser una killer application para que todo el mundo se disponga a usarlo. ¿Cuánto ha tardado el .doc de Microsoft Office en convertirse en estándar, en base a lo que está tardando el tipo ODF?


Campañas de publicidad: en España dudo que las veamos si llegaran a existir. Alguna que otra vez nos viene por TV el anuncio de PC City o de Mediamarkt, pero deja de contar. El Estado español hace tiempo que se vendió al mercado yanki, nos guste o no. Afortunadamente, las comunidades autónomas tienen libertad para elegir el soporte en que se procesen los datos siempre que se provea de la información necesaria para replicar dicha información en el resto de competencias. Adivinad qué: resulta que Linux es libre. Resulta que se puede replicar. Resulta que se puede PERSONALIZAR. Gracias Linex, gracias Guadalinex, gracias Lliurex, y gracias a otras que ahora no me vienen a la cabeza pero sé que existís (aunque ya podríais basaros en KDE, ¡coña!).


Drivers... ¡ay, los drivers! ¿Qué puedo hacer yo, usuario de nVidia, para que la aceleración 3D me venga de fábrica? Pues pagar por el sistema. ¿Qué? Pues sí, nVidia tiene drivers descargables gratuitamente, pero no pueden ser distribuidos si no es pagando por ellos. Así que Linux tiene que ser de pago para ello. Lo mismo con los mp3, algunas webcams, algunas tarjetas WiFi... Hay que pagar por ello, porque ha sido licenciado así. ¿Yo me compraría un PC con Linux en cuya factura pusiera "S.O. Linux - 15EUR" ? Sí. Primero, porque ese precio para el Sistema Operativo es irrisorio. Segundo, porque sé que esos 15 EUR no son por el soporte en CD (que seguramente vendría), sino más bien porque la empresa ha pagado por incluir licencias de nVidia y ATI (y posiblemente otras) en sus controladores para el kernel, en licencias de reproducción de MPEG (mp3 mayormente) y WMA/WMV (aunque se distribuyan los w32codecs, hay que recordar que éstos tienen licencia y ¡efectivamente! es de pago). En fin, que si a mí un PC me cuesta 600 EUR sin S.O., no me importa pagar 615 por el S.O. si éste es Linux, viene preinstalado y con los drivers bien instaladitos y un sitio web de donde bajarme los que necesite en un futuro. En mi caso tal vez no fuera a hacerlo porque sé de dónde conseguirlos sin romper licencias, pero al olmo de un usuario novel no pienso pedirle peras.
\ No newline at end of file diff --git a/source/_posts/2005-09-07-kubuntu-es-vuelta-la-vida-y-van.html b/source/_posts/2005-09-07-kubuntu-es-vuelta-la-vida-y-van.html deleted file mode 100644 index 0531ca7..0000000 --- a/source/_posts/2005-09-07-kubuntu-es-vuelta-la-vida-y-van.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kubuntu-es vuelta a la vida (y van...) -date: '2005-09-07T04:12:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.726-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-7093618666882106434 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/09/kubuntu-es-vuelta-la-vida-y-van.html ---- - -Vale, kubuntu-es ya ha vuelto a la vida. Veremos cuánto dura esta vez. Tenemos el "factor Raúl", es decir, lo que el dueño del hosting tolere el consumo de ancho de banda de lo que se supone es un portal en español de una distribución de linux. Nota: tengo que recordar preguntarle a Rouzic qué pasó con el hosting de Canonical. A ver si ahora vamos a ser los Riddell españoles XD \ No newline at end of file diff --git a/source/_posts/2005-09-13-acelerando-que-es-xgerundio.html b/source/_posts/2005-09-13-acelerando-que-es-xgerundio.html deleted file mode 100644 index f70ff1a..0000000 --- a/source/_posts/2005-09-13-acelerando-que-es-xgerundio.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Acelerando que es Xgerundio -date: '2005-09-13T04:12:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.737-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-6400798176399382056 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/09/acelerando-que-es-xgerundio.html ---- - -XGL ha supuesto una revolución en el modo de tratar los gráficos (animados o no) en el mundo Linux. A pesar de que en todo momento Novell dio la advertencia de ser una beta, todos queremos tener un servidor XGL en nuestra máquina... incluso en detrimento de lo que les pudiera pasar a aplicaciones no compatibles. Cedega, por ejemplo, es una de ellas. No es capaz de funcionar a pantalla completa, según muchos foros. No comentan nada de modo ventana, pero un "mata-mata" tipo "Half-Life" en modo ventana tiene que ser un poco incómodo. En otro blog (no pongo enlaces porque no os imaginais la cantidad de páginas que visito al día), éste en inglés, hablan de AIGLX, una implementación RedHat/Fedora para X.org, que hace más transitivo el paso a la aceleración 3D sin la pérdida de compatibilidad con los binarios actuales. Éste, por ejemplo, será el método que utilizará Edgy, en lugar del XGL que prometieron cuando hablaron de los planes de esta versión. Por mi parte, creo que es más correcto el uso de AIGLX. ¿Por qué? Porque los desarrolladores que no actualizan con frecuencia o que no ven útil que su programa tenga código basado en OpenGL porque utiliza 2D puro y duro pueden seguir utilizando el método clásico, mientras que los desarrolladores de algunos videojuegos, reproductores multimedia, etc, que sí pueden beneficiarse de OpenGL, pueden hacerlo tranquilamente sin temor a tener que reimplementar sus programas según si se basan en el servidor X.org, XGLX (el nombre "formal" del XGL de Novell) o lo siguiente que salga con vete a saber tú qué nombre. Otro factor del mal uso de XGLX es la dependencia TAN elevada de los controladores de la tarjeta gráfica: actualmente quien tiene una ATI lo pasa fatal para hacerlo funcionar (por culpa de ATI, ni más ni menos, cuyas actualizaciones de controladores pasan perfectamente del mes al año, en lo que a usuarios de Linux se refiere). Sin embargo, con los controladores propietarios de nVidia no hay problema ninguno. Glucose viene a ser el término medio. Es decir, una aplicación (basada en QT) que esté en 2D pero quiera ser dibujada por el motor OpenGL de la tarjeta gráfica (lo que conlleva el aligeramiento de peso en el microprocesador) puede hacerlo gracias a un GlucoseInit y la implementación adecuada. Resumiendo: lo ideal para una transición suave entre el actual modelo de X.org y las futuras y venideras implementaciones para un escritorio "acelerado" es actualmente (y mira tú lo bien que nos viene) el modelo que tanto Fedora como Ubuntu están realizando: X.org 7.1 + AIGLX + Glucose. Aunque para Glucose supongo que habrá que esperar a Edgy+1... \ No newline at end of file diff --git a/source/_posts/2005-10-19-de-primeras-con-edgy.html b/source/_posts/2005-10-19-de-primeras-con-edgy.html deleted file mode 100644 index b7d0ad2..0000000 --- a/source/_posts/2005-10-19-de-primeras-con-edgy.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: De primeras con edgy -date: '2005-10-19T04:13:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.748-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-5849725025259496000 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/10/de-primeras-con-edgy.html ---- - -
El mezclote SATA-IDE en mi ordenador me está trayendo de cabeza: cuando tengo que hacer un reinicio (normal en un sistema linux/xp), me toca apagar el equipo, DESENCHUFARLO y esperar de 10 a 15 min a que libere los condensadores. ¿Por qué? Porque si no, el disco IDE no se enciende. Y puesto que dapper no permite inicio en discos SATA con GRUB, tenía que dejarlo ahí. Vale, pues el disco IDE, que tan por saco me ha dado, acaba de ser eliminado de mi torre. Tenía ya una partición hecha y pensada para NTFS y el futuro Windows Vista, así que le daré uso. Instalar el XP me trae recuerdos... ains... xD Instalar edgy con el CD alternate es más cómodo que antes. Aunque se creyera que mi teclado era francés, no hubo problema para corregirle del error. Particionado: ¡Primer fallo! No me deja formatear en XFS, pero sí en Reiser y ext3. Este último siempre me ha fallado por inconsistencia, y aunque tenga los datos en ese sistema de archivos (gracias a IFS for Windows puedo usar la partición), el sistema estará en Reiser (qué remedio). Instalación: pues como siempre, aunque podría decir que hasta ha sido más lenta que de costumbre. Ahora sería cosa de probar la instalación desde LiveCD, a ver qué tan rápido arranca (se supone que han mejorado la velocidad y tal). Arranque: bueno, me esperaba un arranque de grub bonito, pero no. Todo modo texto. Eso sí, rápido de cojones. En mucho menos que lo que dapper, ya tengo mi escritorio disponible para el uso cotidiano. Post-Instalación: en fin, qué voy a decir. Que no llueve a gusto de todos. Actualizar paquetes, instalar nvidia, controladores propietarios multimedia, kdeutils, kdemultimedia (me gusta usar la previsualización en konqueror). Vaporware: otra vez al chroot. Joer, y menos mal que decían que iban a jugar con esa característica. Pues ni simbiosis amd64/i386, ni pruebas con smart (administrador de paquetes y gestor de dependencias), ni xgl (beryl) instalado por defecto. Todo a golpe de apt-get, sí, pero incómodo. Fallos: coño! han arreglado el script de instalación de mldonkey-server... para que luego el Kmldonkey no conecte! xD En serio, creo que hay un problema de conexión o permisos con los puertos, porque el aMule no funciona tampoco en modo local (amule-utils) para pasarle los parámetros por consola. Por lo demás, pues bien. No va más rápido, pero tampoco va más lento. He actualizado paquetes y listos. Vamos, que si dapper me dejara instalar GRUB en mi disco SATA, podría haberme esperado perfectamente a la versión estable de edgy, o incluso a edgy+1 si ésta mejorara lo actual. Recomendación final: actualízate a edgy cuando sea estable... y le apliquen un parche xD
\ No newline at end of file diff --git a/source/_posts/2005-10-22-edgy-rc1.html b/source/_posts/2005-10-22-edgy-rc1.html deleted file mode 100644 index 60156ed..0000000 --- a/source/_posts/2005-10-22-edgy-rc1.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Edgy RC1 -date: '2005-10-22T04:13:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.757-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-6345868154352212710 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/10/edgy-rc1.html ---- - -Bueeeeno, afortunadamente han arreglado cositas. Ya vuelvo a tener mldonkey (bieeeeen), y ya funciona el arranque gráfico (más "bieeeeen"). Parece estable. Por lo menos tengo los paquetes actualizados (su dolor de cabeza costó) y ya no me tengo que preocupar hasta pasados 6 meses. Aunque bueno, ahora que el SATA es el único disco duro, me espero fijo-fijo a que Feisty Fawn sea estable. Espero... xD \ No newline at end of file diff --git a/source/_posts/2005-11-27-kubuntu-es-en-obras.html b/source/_posts/2005-11-27-kubuntu-es-en-obras.html deleted file mode 100644 index d9253b2..0000000 --- a/source/_posts/2005-11-27-kubuntu-es-en-obras.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kubuntu-es en obras -date: '2005-11-27T03:13:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.767-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-4068547602512048280 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/11/kubuntu-es-en-obras.html ---- - -Poco nos dura la estabilidad en Kubuntu-ES. Primero hemos pasado el host de albianlinux a Canonical, y ya he tenido problemas: como el de AL era MySQL 4.0, no había manera de guardar la codificación de las filas ni las tablas, con el consecuente fallo de acentos. Afortunadamente, he podido retocar el archivo de texto y volver a mandarlo vía PHPmyadmin para que todo esté como tiene que estar. Y ahora, a falta de no tener aún el dominio kubuntu-es.org asociado correctamente, tenemos el cierre de la página. Espero que rouzic no tarde demasiado, mayormente por los que vienen detrás. No entiendo muy bien por qué la política/manía que tiene de separar las secciones en distintos drupal, yo lo veo más problema que ayuda a la hora de gestionar la base de datos, pero ya se verá. En fin, supongo que pienso esto porque la página es ya como mi niña pequeña y quiero lo mejor para ella. \ No newline at end of file diff --git a/source/_posts/2005-11-29-una-semana.html b/source/_posts/2005-11-29-una-semana.html deleted file mode 100644 index abe9f98..0000000 --- a/source/_posts/2005-11-29-una-semana.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Una semana -date: '2005-11-29T03:14:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.778-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-4475372144113275983 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/11/una-semana.html ---- - -
Es el período de transición que ha puesto rouzic para que kubuntu-es vuelva a estar en marcha. Tiene realizadas dos de las secciones, y sigue limpiando morralla de los foros. Y es que hay mucha gente que se sigue pasando por el forro de los cojones (sí, aquí me puedo y me pienso permitir el uso de palabras malsonantes) leerse las normas del foro, leerse las secciones disponibles, leerse un libro cada X tiempo para recordar normas tan simples como "a ver"="veamos", "haber"="verbo equivalente a existir". Así que ánimo, que son pocos y cobardes. Los que estamos a la espera del Gran Resurgimiento tenemos el aspell (corrector ortográfico) en mano y el turbante de talibán otrográfico listos para la santa cruzada XD . ¡Ah! Muchísimas gracias a todos los que estáis mandando comentarios a mi blog, aún sin tener necesidad, tanto si es de felicitación como si es de ponerme a caldo. Antes de que alguno lo piense, respondo: no, el blog no surgió después de kubuntu-es y no, no comenté con nadie que yo fuera a informar acerca del estado de la web y que por ello se enlazara a mi blog. De hecho, se enlazó sin mi conocimiento y se me ha puesto como tarea. No me molesta hacerlo, naturalmente (si me molestara, dejaría incluso de ser admin de kubuntu-es), pero que nadie crea que ésta es una manera de promocionarme. Es más, me gustaría que la afluencia de gente que ve este blog subiera sólo porque le gusta leerme cada vez que escribo alguna cosa mía, no porque sea la única manera de saber qué se cuece tras las bambalinas de kubuntu-es (lo que me recuerda que tengo que preguntarle a patrick cada cuánto se actualiza el planet).
\ No newline at end of file diff --git a/source/_posts/2005-12-01-la-de-microsoft.html b/source/_posts/2005-12-01-la-de-microsoft.html deleted file mode 100644 index e96ac48..0000000 --- a/source/_posts/2005-12-01-la-de-microsoft.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: La "innovación" de Microsoft -date: '2005-12-01T03:14:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.790-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-8246117387403827243 -blogger_orig_url: http://devopsysadmin.blogspot.com/2005/12/la-de-microsoft.html ---- - -
A través de un enlace de menéame, veo un resumen de algunas de las "innovaciones" que Microsoft se suele pegar como propias. El artículo es algo extenso, así que voy a traducir únicamente el resúmen de cada párrafo:

  • DOS : Comprado a Seattle Computers en 1980

  • Compilador C: licencia de Lattic en 198?

  • Flight Simulator: licencia de BAO en 1982 y luego adquirido junto con BAO en 1995

  • Windows: GUI licenciada por Apple en 1985

  • Powerpoint: Adquirido con la compra de Forethought en 1987

  • Windows NT: basado en propiedad intelectual robada de Digital en 1988

  • Sistema de Archivos Comunes en Internet: Copia del protocolo SMB de IBM

  • Pila TCP/IP: licenciado por Spider Software en 19??

  • MS-RPC: copia del DCE-RPC de Apollo por uno de sus fundadores en 198?

  • Visual Basic: comprado como Ruby de Alan Cooper en 1988

  • SQL Server: licencia de Ashton-Tate en 1989

  • TrueType: licencia de Apple en 1991

  • Internet Explorer: licencia de Spyglass en 1994

  • DirectX: adquirido con la compra de Rendermorphics en 1995

  • Frontpage: comprado de Vermeer en 1996

  • Librerías C++ estándar: licencia de Dinkumware en 1996

  • Tecnología óptica de tracking de Intellimouse Explorer: licencia de Agilent en 1998


Microsoft ha hecho mucho por y para los usuarios de ordenadores... Sí, claro, lo mismo que Sauron en la Tierra Media con el Anillo Único, no te jode...
\ No newline at end of file diff --git a/source/_posts/2006-01-16-instalador-de-ubuntu-para-windows.html b/source/_posts/2006-01-16-instalador-de-ubuntu-para-windows.html deleted file mode 100644 index b423f08..0000000 --- a/source/_posts/2006-01-16-instalador-de-ubuntu-para-windows.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Instalador de Ubuntu para Windows -date: '2006-01-16T03:15:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.800-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-4763653932561372681 -blogger_orig_url: http://devopsysadmin.blogspot.com/2006/01/instalador-de-ubuntu-para-windows.html ---- - -
¿Tienes un equipo con Windows instalado? ¿Quieres
instalar linux, pero te parece demasiado complicado?
Pues no hay problema. Los chicos de Ubuntu ya se han puesto manos a la
obra, y tienen en marcha el proyecto "install.exe", que es, ni más ni
menos, un instalador de X/K/Ubuntu para Windows.
El programa se encuentra en una fase muy verde, pero ya contiene unas
cuantas capturas de pantalla, gracias a las cuales podemos apreciar que
la instalación será muy, pero que muy sencilla, y que además mantendrá
intactos los datos de nuestra partición windows.
https://wiki.kubuntu.org/install.exe/PrototypeExisten
dos maneras para instalarlo: mediante el instalador (el cual nos
recordará un poco a la manera que tiene Internet Explorer en
instalarlse) que ocupa unos 1.5MB y que va descargando los archivos
necesarios, o un archivo único con todo lo necesario para su
instalación desde Windows, descargable mediante .torrent .
\ No newline at end of file diff --git a/source/_posts/2006-03-07-28-pautas-para-reforzar-tu-servidor.html b/source/_posts/2006-03-07-28-pautas-para-reforzar-tu-servidor.html deleted file mode 100644 index c211bdf..0000000 --- a/source/_posts/2006-03-07-28-pautas-para-reforzar-tu-servidor.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: 28 pautas para reforzar tu servidor linux -date: '2006-03-07T03:21:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.811-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-7995647663797481457 -blogger_orig_url: http://devopsysadmin.blogspot.com/2006/03/28-pautas-para-reforzar-tu-servidor.html ---- - -Traducción libre de http://kevin.hatfieldfamilysite.com/?p=147:

1. En tu cortafuegos (tienes uno, ¿verdad?) confirma que el puerto MySQL para entrantes es el 3306 y ciérralo. Si este puerto se queda abierto se expone tanto a un abuso de servicio y una amenaza de seguridad ya que no sólo los hackers pueden irrumpir en MySQL, sino que cualquier usuario puede almacenar su base SQL en tu servidor y acceder desde cualquier equipo, y así (ab)usar los recursos de tu servidor.

2. Chequea los permisos de /tmp. Deberían estar en chmod 1777

3. Chequea el propietario de /tmp. Debería pertenecer a root:root

4. Chequea /etc/cron.daily/logrotate. Debido a un bug en logrotate, si se monta /tmp con la opción noexec, necesitas que logrotate use un directorio temporal diferente. Si no lo haces, este syslog puede no reiniciarse correctamente y escribirá sobre archivos antiguos/incorrectos.

5. Chequea los permisos de /var/tmp. Debería estar en chmod 1777

6. Chequea el propietario de /var/tmp. Debería pertenecer a root:root

7. Chequea que /var/tmp está montado como sistema de archivos. No debería estar enlazado (ln -s) a /tmp o montado como un sistema de archivos.

8. Chequea que /var/tmp está montado con noexec,nosuid. Normalmente no tiene estas opciones, con lo que deberías considerar agregar un punto de montaje en /etc/fstab con esas opciones.

9. Chequea los permisos de /usr/tmp. Deberia estar en chmod 1777

10. Chequea el propietario de /usr/tmp. Deberia pertenecer a root:root

11. Chequea que /usr/tmp está montado como sistema de archivos o es un enlace simbólico (ln -s) de /tmp.

12. Chequea /etc/resolv.conf . No deberías especificar como nombre de servidor (nameserver) a 127.0.0.1 o a localhost. Usa la IP principal de los servidores en su lugar. Chequea 12b. Chequea /etc/named.conf por las restricciones de recursividad . Si tienes un servidor DNS local ejecutándose pero no tienes restricciones de recursividad establecidas, es un riesgo de seguridad y de rendimiento tan buenos como ataques DDoS contra tu sistema, con lo que deberías establecerlo sólo para las direcciones IP locales.

13. Chequea el runlevel del servidor. Para un entorno seguro deberías ejecutar el servidor sólo a nivel 3. Puedes solucinarlo editando /etc/inittab y cambiando la linea de "initdefault" a como sigue: id:3:initdefault y luego reiniciar el servidor.

14. Chequea el cron del usuario "nobody". Tienes un registro de nobody que deberías chequear si no ha sido creado por un exploit.

15. Chequea el soporte del Sistema Operativo. Asegírante que tu versión aún tiene soporte del fabricante y que las actualizaciones aún siguen disponibles.

16. Chequea si SSHv1 está desactivado. Deberías, editando /etc/ssh/sshd:config y configurando: Protocol 2 (eliminando la almohadilla del principio de linea y editando donde pone "1.1")

17. Chequea si SSH está en un puerto no-estándar. Mover SSH a un puerto no-estándar evita escaneos básicos de puertos SSH. Edita /etc/ssh/sshd_config y configura Port nnnn, donde nnnn es un puerto a tu elección. ¡No olvides abrir el puerto en el cortafuegos antes!

18. Chequea en SSH "PasswordAuthentication". Para la seguridad definitiva de SSH, puedes considerar desactivar esta opción y permitir acceso sólo usando "PubKeyAuthentication".

19. Chequea que el puerto 23 de telnet no está en uso. Cierra este puerto en tu cortafuegos. Telnet es un protocolo inseguro y deberías desactivar el servicio telnet si está ejecutándose.

20. Chequea los límites de recursos de la shell. Deberías activarlos para prevenir que los usuarios de shell consuman recursos de servidor (exploits de DoS, mayormente). Si estás usando cPanel/WHM activa "Shell Fork Bomb Protection".

21. Desactiva todas las instancias de IRC - BitchX, bnc, eggdrop, sniffers genéricos, servicios guardianes, ircd, psyBNC, ptlink. Si estás usando WHM puedes hacerlo en "Background Process Killer".

22. Chequea el modulo mod_security en apache. Debería estar instalado.

23. Chequea el modulo mod_evasive en apache- Deberías instalarlo desde el código fuente para evitar ataques DoS contra apache. Cuidado porque este módulo se carga la funcionalidad de FrontPage.

24. Chequea el valor RLimitCPU de apache. Deberías establecer un valor para evitar scripts que consuman recursos de servidor (exploits de DoS).

25. Igualmente para el valor RLimitMEM.

26. Chequea el valor de enable_dl en php. Deberías modificar /usr/local/lib/php.ini y configurar enable_dl = off. Esto previene a los usuarios de ejecutar modulos php que afecten a cualquiera en el servidor. Nota que si se usan librerías dinámicas, como ioncube, deberás cargarlas directamente en php.ini

27. Chequea el valor de disable_functions en php. Deberías modificar /usr/local/lib/php.ini y desactivar las funciones más comúnmente atacadas. Por ejemplo:disable_functions = show_resource, system, shell_exec, passthru, exec, phpinfo, popen, proc_open. Algunos scripts de clientes web pueden fallar con algunas de estas funciones desactivadas, así que tendrás que quitarlas de esta lista.

28. Chequea phpsuexec. Para reducir el riesgo de que hackers accedan a todos los sitios del servidor desde un script web, deberías activar phpsuexec cuando construyes apache/php. Nota que hay efectos laterales cuando se activa phpsuexec en un servidor y debes tenerlos en cuenta antes de activarlos. \ No newline at end of file diff --git a/source/_posts/2006-05-17-kreo-k-hestoi-listo-xa-canviar-linus.html b/source/_posts/2006-05-17-kreo-k-hestoi-listo-xa-canviar-linus.html deleted file mode 100644 index cb7735f..0000000 --- a/source/_posts/2006-05-17-kreo-k-hestoi-listo-xa-canviar-linus.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kreo k hestoi listo xa canviar a linus -date: '2006-05-17T04:21:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.822-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-2588407027875275914 -blogger_orig_url: http://devopsysadmin.blogspot.com/2006/05/kreo-k-hestoi-listo-xa-canviar-linus.html ---- - -Vale. Has pensado, tras constantes comidas de cabeza de tus amigos frikis, que linux es lo que necesitas para que "nadie te robe los archivos" ni se te ponga "malito" el ordenador a causa de los virus "que son mú malos". Te han hablado maravillas y que Linux puede parecerse (visualmente) a Windows todo lo que tú quieras, y que hay programas análogos a todos los que en él tienes para que no tengas excusas. Bien. Ahora me toca a mí. No me queda más remedio que darte un par de avisos acerca de lo que linux NO puede hacer hoy por hoy:

  • Cuando compras un juego (y eso es culpa del fabricante), aunque ponga PC-CDROM, puede NO funcionar con linux. ¿Por qué? Porque donde dice "PC" debería decir "Win". Así de mal. Y debería haber etiquetas según el sistema. Por ejemplo: logo de windows + CDROM; pingüino + CDROM; Manzanita mordida + CDROM. Así queda muy, pero muy claro, para qué plataforma está soportado ese juego. ¿O es que no hacen lo mismo con Xbox-360 y PS2 (por poner un ejemplo)?

  • El software específico de tu empresa puede NO funcionar. Si eres programador de centralitas, o quieres el Contapús Sibarita Gañán, tal vez necesites un equipo con la plataforma para la que fue creado.

  • Si no sabes escribir como $DIOS manda, no quiero que uses linux. Muchos de la comunidad no queremos que uses linux. Vuélvete al sueño de Matrix y déjanos tranquilos.

  • Deja de pensar en descargarte un "setup.exe". Esto es un sistema DIS-TIN-TO. Los basados en debian usarán una herramienta; los basados en Red Hat, otra. Pero no (repito-NO) hay un setup.exe .


Y ahora que te he devuelto a la realidad, y si sigues pensando que quieres linux, te recomiendo algo de hardware:

  • Que esté basado en 64bits. ¿Por qué? Porque los 32 tienden a su extinción. AMD64, Core2Duo... el que tú quieras, pero 64 bits. La velocidad es indistinta, siempre que cumplan ese requisito.

  • Tarjeta nVidia, hasta que AMD/ATI cumpla y proporcione drivers de calidad. No te puedes imaginar la cantidad de comentarios en los foros acerca de los problemas de instalación de los drivers de ATI.

  • 1 GB de RAM. Así te lo suelto. Sí, linux puede ir con menos, pero para hacerlo parecido a Windows/MacOSX vas a necesitar algo más que intenciones.

  • Dedicar 10 GB de tu disco duro al sistema. El resto, todo lo grande que tú quieras. Es más, si puedes, un disco lo más pequeño del mercado y otro todo lo grandote que puedas. Uno, sistema operativo. El otro, tu morralla. Ya sé que Windows se instala en menos de 2 GB, pero no te viene con Ófis ni cortafuegos (no, no considero cortafuegos a la porquería del SP2) ni antivirus ni editor de fotos ni... ¡ah! ¡que sí que te viene! pues eso es porque el que te ha vendido el equipo está haciendo una instalación ILEGAL de software


Esta lista está sujeta a modificación y/o crítica constructiva, toda ayuda es naturalmente bienvenida. \ No newline at end of file diff --git a/source/_posts/2006-06-07-iconos-oxygen-en-kde-35x.html b/source/_posts/2006-06-07-iconos-oxygen-en-kde-35x.html deleted file mode 100644 index 6784832..0000000 --- a/source/_posts/2006-06-07-iconos-oxygen-en-kde-35x.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Iconos Oxygen en KDE 3.5.x -date: '2006-06-07T04:22:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.834-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-3276902705398751734 -blogger_orig_url: http://devopsysadmin.blogspot.com/2006/06/iconos-oxygen-en-kde-35x.html ---- - -Los usuarios de PCs que siguen noticias de linux saben que se aproxima un cambio evolutivo en el sistema de escritorio KDE. En su versión 4.0, este entorno proporcionará una mayor coherencia entre sus componentes visuales (Plasma), auditivos (Phonon/decibel) y de control de hardware (Solid), de manera que tendremos que preocuparnos menos de configuraciones y más de hacer un entorno a nuestro gusto y medida. Entre los cambios visuales que traerá consigo se encuentra el juego de iconos Oxygen, de alta calidad y que han seguido un estudio de usabilidad para hacernos más fácil saber qué tipo de archivo estamos tratando según su icono asociado. Pero, ¿tenemos que esperar a KDE 4? ¡Pues no! No necesariamente, vaya. Con un par de arreglos podemos tener los iconos de oxygen listos para el uso y deleite cotidiano en nuestro actual KDE. Vamos por partes:

  1. Ten instalado el paquete subversion. No es necesario realmente, pero si te gusta ir viendo los cambios y añadidos que van implementando los iconos, es muy recomendable.

  2. Instala también el paquete kde-icons-nuovext. Luego entenderás por qué.

  3. Copia la carpeta /usr/share/icons/hicolor a tu carpeta $HOME/.kde/share/icons/ . Todos los conjuntos iconos tienen una propiedad (se ve en el index.theme de la carpeta del conjunto) que hacen que hereden del conjunto hicolor. Así que, tratándose de versiones SVN (ergo, incompletas) de iconos, vamos a dar antes un poco de coherencia al conjunto

  4. Ahora, copia el contenido de /usr/share/icons/crsytalsvg a $HOME/.kde/share/icons/hicolor, esto es, cp -R /usr/share/icons/crystalsvg/* $HOME/.kde/share/icons/hicolor/. Esto sobreescribirá los antiguos iconos hicolor por crystal, bastante más vistosos.

  5. Ahora viene nuovext. Realiza el mismo paso anterior, esto es, cp -R /usr/share/icons/nuovext/* $HOME/.kde/share/icons/hicolor/. Los iconos nuovext se parecen mucho más a los futuros oxygen que los de crystal.

  6. Copia únicamente el archivo /usr/share/icons/hicolor/index.theme en la carpeta $HOME/.kde/share/icons/hicolor

  7. Explico estos cuatro pasos anteriores como capas de una imagen: Primero establecemos la base o "fondo" a partir del estándar, hicolor. No obstante, esta base está bastante obsoleta y la actualizamos con crystal, que sería la primera capa. Esto nos daría realmente el mismo resultado que tener el juego de iconos crystal por defecto, dada la herencia que antes he mencionado con hicolor. Pero como crystal difiere del objetivo final, añadimos una capa más (nuovext) que tiene un mayor parecido. Visualmente ya estaría, pero para que oxygen crea que este conjunto de iconos es el hicolor (del cual heredará todos los iconos que él no tenga), tenemos que hacérselo creer, y es por eso que copiamos el archivo index.theme

  8. Sólo queda descargar el archivo oxygen.tar.bz2 (¡¡CUIDADO!! SON 82MB DE DESCARGA) y descomprimirlo en $HOME/.kde/share/icons mediante tar -xjvf oxygen.tar.bz2. Esto ya SI es el conjunto oxygen del futuro KDE 4.

  9. Bien, doy por sentado que sabeis cambiar el conjunto de iconos. Yo lo hago desde kcontrol porque no me convence ksystemsettings, pero tanto con uno como con otro resulta bastante fácil.


Listo, ya teneis el futuro oxygen para vuestro disfrute personal. Ahora, si queréis que se reflejen los cambios que van haciendo a los iconos, abrís una consola, entrais en $HOME/.kde/share/icons/oxygen y tecleais svn update, que actualizará los iconos a la última versión del SVN. \ No newline at end of file diff --git a/source/_posts/2007-04-10-kubuntu-70-gutsy-gibbon-tribe-4.html b/source/_posts/2007-04-10-kubuntu-70-gutsy-gibbon-tribe-4.html deleted file mode 100644 index 6b3e74c..0000000 --- a/source/_posts/2007-04-10-kubuntu-70-gutsy-gibbon-tribe-4.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Kubuntu 7.0 (Gutsy Gibbon) Tribe 4 disponible -date: '2007-04-10T04:23:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.847-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-494287876404136889 -blogger_orig_url: http://devopsysadmin.blogspot.com/2007/04/kubuntu-70-gutsy-gibbon-tribe-4.html ---- - -Tal y como se encuentra kubuntu-es, que parece que no levanta cabeza con el tema del hosting (*suspiro*), voy a dar la noticia en mi blog, porque hay novedades que considero interesantes:

  • Nuevo administrador de controladores restrictivos. ¿Que qué es esto? Bueno, primero explicaré un poquito la cosa. Muchas empresas, al tener que investigar sobre Sistemas Operativos de código cerrado el cómo funcionarán sus dispositivos, gastan una buena cantidad de pasta en programadores y licencias de uso. Para cuando el producto funciona lo suficientemente bien como para sacarlo al mercado, la inversión ha sido tal y los acuerdos con dichos creadores de sistema tan súmamente restrictivos, que los fabricantes se encuentran o bien sin efectivos, o bien imposibilitados por contrato, o bien porque en realidad se la suda completamente. Para esto último, desgraciadamente, no hay solución. Para el primero y el segundo, una posibilidad (que afortunadamente se acepta más) es liberar el código y que "los frikis de linux" se curren un controlador. Y luego la que hace por ejemplo nvidia, que es proporcionar drivers para el sistema, aunque cerrados. Para esto último es para lo que sirve este administrador de controladres restrictivos. Dado que la licencia de libre distribución de Ubuntu choca con la "no-libre" distribución de algunos controladores (como el ejemplo de nvidia), se utiliza este gestor para que el usuario pueda descargarlos e instalarlos cómodamente y sin necesidad de usar la malquerida consola (no sé yo qué tirria le tiene la gente, cuando no hay nada más rápido y efectivo).

  • Se instala la biblioteca QT 4.3.1, con código optimizado para máquinas nuevas

  • Edubuntu, la distribución dedicada a la educación, también estará disponible con KDE como escritorio

  • Actualización de 7.04 (Feisty) a 7.10 (Gusty) a través de adept. ¡Adiós otra vez a la consola! Si tienes instalado feisty, ejecuta (Alt+F2) kdesu "adept_manager --version-upgrade". Si ya tienes instalado gutsy y quieres actualizar, ejecuta (Alt+F2)kdesu "adept_manager --dist-upgrade-devel"

  • KMail ya viene instalado con herramientas GPG activadas. GPG es un conjunto de encriptación/desencriptación de datos que permite que el correo electrónico lo tenga que leer su destinatario y nadie más

  • ¡¡ KDE 4 beta 1 !! Paquetes disponibles e integrados en el sistema de lo que será el futuro KDE 4. No hay actualmente muchas aplicaciones que funcionen sobre él, dado su estado beta y que estamos hablando de una "major release", que es como decir pasarse de NT a 2000 (no, no digo de XP a Vista porque eso es pasarse, pero con la máquina).

  • OpenOffice 2.3, la suite ofimática libre más famosa y usada. Aún se encuentra en estado de desarrollo, pero los chicos de ubuntu han creado binarios para que podamos ir saboreando las nuevas características de esta completa suite.


Si a esto le juntamos la novedad de un front-end (programa visual, con ventanitas y botoncitos) para gdebi, el instalador de paquetes ".deb" de manera local (apt lo hace de manera remota), tendremos una distribución más orientada al usuario final, menos dependiente de la consola, consistente y que separa el código libre y el cerrado. Kubuntu va por buen camino, pero ojalá no tuviera que ceñirse al "Release Plan" de Ubuntu. Me gustaría ver una Gutsy con un definitivo KDE 4, aunque tuviera que esperar a finales de octubre / primeros de noviembre para ello. Bueno, eso y que son 10 desarrolladores a tiempo parcial (menos John Riddell, que es a tiempo completo) frente al < exageración > ejército < /exageración > que tiene montado ubuntu. Capturas de pantalla, anuncio y fuente original: https://wiki.kubuntu.org/GutsyGibbon/Tribe4/Kubuntu \ No newline at end of file diff --git a/source/_posts/2007-10-24-los-drivers-de-ati-listos-para-su-uso.html b/source/_posts/2007-10-24-los-drivers-de-ati-listos-para-su-uso.html deleted file mode 100644 index 0a97173..0000000 --- a/source/_posts/2007-10-24-los-drivers-de-ati-listos-para-su-uso.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Los drivers de ATI listos para su uso con Compiz -date: '2007-10-24T04:24:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.860-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-3370920613405908132 -blogger_orig_url: http://devopsysadmin.blogspot.com/2007/10/los-drivers-de-ati-listos-para-su-uso.html ---- - -
Veo en menéame que ya hay disponible un driver de ATI compatible con Compiz sin necesidad de Xgl (vamos, que por fin los usuarios de ATI pueden hacer las cosas como el resto de los mortales). Enlaza a una página alemana, con instrucciones en inglés: http://forlong.blogage.de/article/2007/10/23/fglrx-8423---finally-with-AIGLX-support# Hago aquí la traducción para el que quiera hacerle uso:

  1. Eliminar Xgl, si está instalado: sudo apt-get remove xserver-xgl

  2. Eliminar el antiguo controlador, si está instalado: sudo apt-get remove xorg-driver-fglrx

  3. Eliminar los antiguos .deb de fglrx: sudo rm -f /usr/src/fglrx-kernel*.deb

  4. Agregar en la lista negra el antiguo módulo fglrx sudo gedit /etc/default/linux-restricted-modules-common DISABLED_MODULES="fglrx"

  5. Alternativamente, elimina el paquete linux-restricted-modules-* de tu kernel, a menos que uses un chip Atheros. Puede que necesites reiniciar.

  6. Descarga el instalador a tu carpeta personal: wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run

  7. Instala los paquetes necesarios: sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic

  8. Crea e instala el paquete .deb: bash ./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb

  9. Compila el módulo del kernel: sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod

  10. Configura el controlador: sudo gedit /etc/X11/xorg.conf

  11. Asegúrate que, en la sección "Device", está puesto el driver "fglrx". Y, si existiera alguna de estas líneas, eliminarla: Section "Extensions" Option "Composite" "0" # or "Disable" EndSection Section "ServerFlags" Option "AIGLX" "off" EndSection

  12. Reiniciar

  13. mkdir -p ~/.config/compiz && echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager .Esto creará un archivo en tu carpeta personal, que asegurará que Compiz se ejecute sin el prefijo anterior.


Y ahora, el .sh para los gandules: #! /bin/bash # Script para la instalación del driver ATI sudo apt-get remove xserver-xgl sudo apt-get remove xorg-driver-fglrx sudo rm -f /usr/src/fglrx-kernel*.deb sudo echo 'DISABLED_MODULES="fglrx"' >> /etc/default/linux-restricted-modules-common wget http://www2.ati.com/drivers/linux/ati-driver-installer-8.42.3-x86.x86_64.run sudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-generic bash ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Ubuntu/gutsy sudo dpkg -i fglrx-kernel-source_8.42.3-1_i386.deb xorg-driver-fglrx_8.42.3-1_i386.deb sudo m-a prepare,update sudo m-a build,install fglrx-kernel sudo depmod mkdir -p ~/.config/compiz echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager # #Fin. Recordar cambiar el driver en /etc/X11/xorg.conf y asegurarse de que esté activado Composite y AIGLX # El script puede dar errores en apt-get si ya hay instalados paquetes o ya están eliminados.
\ No newline at end of file diff --git a/source/_posts/2007-11-30-lo-que-nos-traera-kubuntu-hardy.html b/source/_posts/2007-11-30-lo-que-nos-traera-kubuntu-hardy.html deleted file mode 100644 index 6c69d7b..0000000 --- a/source/_posts/2007-11-30-lo-que-nos-traera-kubuntu-hardy.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Lo que nos traerá Kubuntu Hardy -date: '2007-11-30T03:24:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.871-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-5911299460409605077 -blogger_orig_url: http://devopsysadmin.blogspot.com/2007/11/lo-que-nos-traera-kubuntu-hardy.html ---- - -Me ha dado por leerme los blueprints para Hardy, que viene a ser la lista de cosas que les gustaría tener implementadas para esta nueva versión de Kubuntu. Como usuario de KDE que soy, voy a centrarme en lo que nos quieren traer y que afecte a nuestro K-Escritorio.

  • Autenticación con Dominios Windows. Esto tal vez no sea útil para los usuarios convencionales (aka Home/Desktop-users), pero sí para entornos de trabajo. Imaginaos la de programas que hay que utilizan autenticación LDAP o de Active Directory. Imaginaos ahora que un usuario de ubuntu tuviera que andar "enguarrándose" con usuario y contraseña POR APLICACIÓN. Y peor aún, imaginaos a un usuario cuyo administrador de sistemas (que es su labor) cambia las contraseñas cada X tiempo. ¿Entendéis lo útil que puede llegar a ser?

  • Continúa la integración con KDE 4. Aunque hardy no lo traerá por defecto (pensad que es una LTS y quieren estar muy MUY seguros de que todo va a ir como la seda), se van integrando elementos del futuro KDE 4 en Kubuntu. Se usará la estructura de empaquetación de Debian, pero sustituyendo todo aquello que indique kde por kde4, para que coexistan ambos escritorios de manera temporal. Así, en vez de kdebase, por ejemplo, el paquete se llamaría kde4base, se instalará en /usr/lib/kde4, etc.

  • Hacer lo mismo que hace Ubuntu. Puede parecer una chorrada, y bastante mal me parece que tengan que planteárselo como propósito en vez de ser algo inherente, pero aquí está. Quieren que Kubuntu tenga las mismas funcionalidades de Ubuntu. ¿Ninguno se ha tomado Kubuntu Gutsy como un Ubuntu Feisty con paquetes actualizados? Se debe a la preferencia (y cantidad de gente) que se da al escritorio con Gnome. Parece que se van a poner las pilas y ofrecer módulos de configuración de compiz en ksystemsettings (el pseudo-sustituto de kcontrol), instalación automática de impresoras (como ya hace Ubuntu Gutsy), instalación automática de códecs en kaffeine, etc. Para mantener coherencia con KDE 4, usarán PyQT4.


El resto de características en blueprints (44 a fecha de hoy) tienen una influencia mayor en Gnome o en el futuro GoBuntu, Ubuntu optimizado para su virtualización. \ No newline at end of file diff --git a/source/_posts/2008-01-03-kde-40-no-es-kde4.html b/source/_posts/2008-01-03-kde-40-no-es-kde4.html deleted file mode 100644 index 76739ec..0000000 --- a/source/_posts/2008-01-03-kde-40-no-es-kde4.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: KDE 4.0 no es KDE4 -date: '2008-01-03T03:25:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.881-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-2344654389957284936 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/01/kde-40-no-es-kde4.html ---- - -
Hago CopyPaste de un post en kdehispano.org que me ha parecido de lo más acertado en lo que será y lo que no será KDE 4.0:

Como ya digo más abajo, ya hace un año que se hablaba de que KDE 4.0 no iba a ser KDE4. No es cierto que «les ha pillado el toro [...] y que ahora se excusan con lo de sacar el producto a plazos [...] como Akonadi»; hace mucho tiempo que ciertas cosas, como Akonadi, estaban descartadas para KDE 4.0. Aquí mismo en KDEHispano hubo una encuesta que preguntaba qué versión de KDE4 iba a utilizar y una de las respuestas era directamente KDE 4.1, dando por hecho que la versión KDE 4.0 no iba a estar precisamente completa. Pero el asunto no está en discutir si KDE 4.0 está acabado o no, o si lo han sacado deprisa y corriendo o más o menos acorde a sus planes. El asunto es que desde el equipo de KDE (y creo que no sólo desde ahí) se percibe una exagerada expectación ante KDE 4.0, por que el público en general tiende a confundir ambas cosas, y se espera que KDE 4.0 sea la repanocha, cuando lo cierto es que en ciertos ámbitos veremos claramente recortadas las funcionalidades respecto a la última versión de la serie 3.x.


¿Qué temen? Que cuando KDE 4.0 salga a la calle sea públicamente ajusticiado por la parte más «inculta» en asuntos de desarrollo de software de la fauna que puebla el bosque digital que es Internet, es decir, periodistas en busca de sangre sensacionalista, blogueros compulsivos sin visión, comentaristas anónimos y no tan anónimos con la misma falta de visión y más ganas aún de carnaza, y otros chascarristas y descerebrados varios. Y tendrán razón en que KDE 4.0 supone un cierto retroceso en ciertas cosas, tan cierto como que supone un gran avance en otras cosas que están ocultas, en las infraestructuras. Por que estos personajes probablemente no pasarán de echar un rápido vistazo a algún LiveCD, ejecutarán un par de plasmoides y poco más. Y eso será terriblemente injusto.


Por ejemplo, miedo me dan los comentarios que se puedan hacer al respecto de KDE 4.0 en Meneame por parte de los más descerebrados y toda la posible audiencia que pueda leerlos. ¿Y después? Cuando a finales de año salga KDE 4.1 y ya empiece a ser la mencionada repanocha todo el mundo recordará lo malo que (supuestamente) era antes y habrá que vencer una resistencia artificialmente construida en base a esa errónea percepción de la versión 4.0. Así que este tipo de mensajes trata de recordar que las funcionalidades de KDE4 se irán alcanzando según avance el ciclo de vida del software. Desde luego, si luego resulta KDE 4.0 es un desastre habrá que criticarlo sin miramientos, por que ocultar la verdad no sirve de nada y no es desde luego el estilo del mundo del software libre (ocultismos y otras negras artes las dejamos para otros).


En resumen, que hay que tratar de hacer críticas acertadas, con conocimiento de causa. Brevemente: sí, faltarán cosas; sí, estábamos avisados, sí, probablemente pretendían tener más cosas listas; sí, tienen miedo a la reacción de la «crítica rápida superficial» típica de Internet y, por último, creo que se debe simplificar el asunto a «van retrasados y dan excusas».[...]


Y es que la crítica fácil es demasiado... eso, fácil, como para dejarla escapar. Nos encanta desmerecer el trabajo ajeno sin tener ni zorra idea de lo que se ha trabajado en él. Así que, señores fanboys, aparte de las flechas, vayan preparando escudos. No pienso quedarme de brazos cruzados mientras intentan desmembrar el trabajo DESINTERESADO de un grupo de personas que, con cada versión, acercan el software libre al usuario de a pie por un lado, y simplifican la tarea de desarrollo por otro.


El que avisa no es traidor.
\ No newline at end of file diff --git a/source/_posts/2008-05-01-kde-41-ya-tiene-una-alfa.html b/source/_posts/2008-05-01-kde-41-ya-tiene-una-alfa.html deleted file mode 100644 index 20b8ddc..0000000 --- a/source/_posts/2008-05-01-kde-41-ya-tiene-una-alfa.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: KDE 4.1 ya tiene una alfa -date: '2008-05-01T04:28:00.000-07:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.891-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-625097430063534230 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/05/kde-41-ya-tiene-una-alfa.html ---- - -La gente de KDE ya tiene disponible su primera alfa de lo que será la versión 4.1 de este entorno gráfico. La principal característica que diferencia esta nueva de la anterior 4.0 es su destino: el usuario final (recordemos que la anterior estaba destinada a desarrolladores para que fueran migrando sus aplicaciones a la nueva rama KDE4). Con esta nueva alfa, tenemos también una novedad: multiplataforma. El más purista (y quisquilloso) podría decirme que eso ya era viable gracias a cygwin, y en cierto modo así es. Sin embargo, cygwin es una capa que instala las aplicaciones que así lo permiten, y KDE 4.1 será completamente nativo. No creo que sea necesario decir que difícilmente se trasladará el escritorio, sino más bien las aplicaciones que sobre él corren. Imaginaos, por ejemplo, la introducción de amaroK en el mundo windows: cuidado Winamp, cuidado iTunes. En el campo del correo electrónico, imaginaos un kmail que fuera válido tanto para empresa como para particulares. En el de mensajería (quitando el famoso pidgin), kopete con su posibilidad de multiprotocolo (MSN, AIM, Yahoo IM, gTalk/Jabber, IRC...). En fin, el lector menos avispado notará que se me está haciendo la boca agua. No es para menos, ya que también es un camino que allana la migración de los usuarios a sistemas abiertos (FreeBSD, OpenSolaris, Linux). Primero se le acostumbra al nuevo conjunto de aplicaciones, se le explica sus bondades y demuestra su utilidad, y poco a poco, cuando se encuentre cómodo, ¡ZAS! En toda la boc... esteee... se le cambia el sistema operativo. Nota para hoygans: chavales, si os aparece una palabra subrayada en rojo ondulado, no significa que el programa la considere importante. Es que está mal escrita. (Ventajas del aspell en todo lo que huele a KDE). \ No newline at end of file diff --git a/source/_posts/2008-09-10-vuelta-debian.html b/source/_posts/2008-09-10-vuelta-debian.html deleted file mode 100644 index 36a94bc..0000000 --- a/source/_posts/2008-09-10-vuelta-debian.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: Vuelta a Debian -date: '2008-09-10T09:48:00.000-07:00' -author: David PG -categories: -- linux -- debian -- testing -modified_time: '2015-02-17T07:18:34.611-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-1197470276659353371 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/09/vuelta-debian.html ---- - -Tras todo este tiempo perteneciendo a la saga de seguidores de kubuntu, vuelvo a mi sitio dentro de la comunidad Debian.

¿Por qué? Primero, porque Debian es una excelente solución para servidores y equipos que requieren estabilidad por encima de actualizaciones. Segundo, porque los paquetes "testing", a pesar de su nombre, son bastante sólidos y se actualizan cada poco. Y tercero, porque creo que la hija Ubuntu tiene demasiados avalorios que a mí me resultan algo incómodos. No soy propenso al escritorio espartano (salvo en el ámbito laboral, en el que prefiero consola y herramientas gráficas básicas), y de hecho tengo agregado el repositorio de kde4 para debian Lenny, pero es que hay algo en esta distribución que me convence cada vez más.

En fin, ya os iré contando programas, consejos, trucos y métodos de afinamiento para esta distribución. \ No newline at end of file diff --git a/source/_posts/2008-09-22-vlc-092-con-interfaz-qt4.html b/source/_posts/2008-09-22-vlc-092-con-interfaz-qt4.html deleted file mode 100644 index 0396085..0000000 --- a/source/_posts/2008-09-22-vlc-092-con-interfaz-qt4.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: VLC 0.9.2, con interfaz QT4 -date: '2008-09-22T14:01:00.000-07:00' -author: David PG -categories: -- KDE -- escritorio -- debian -modified_time: '2015-02-17T07:18:34.901-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-4703935396060960974 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/09/vlc-092-con-interfaz-qt4.html ---- - -A estas alturas no es noticia que el reproductor multimedia VLC tiene nueva versión, la 0.9.2, y tampoco lo es que su juego de botones y ventanas ha cambiado del wxWindows a QT4. El objetivo de este artículo, no obstante, es el de integrar una aplicación tan útil en el escritorio KDE.

Para empezar, y a sabiendas de que yo uso Debian Testing (sí, testing, y no lenny. Ahora mismo es la misma distribución, pero la testing es cambiante con el tiempo y lenny, cuando pase a estable, tendrá únicamente corrección de fallos de seguridad), comento que habrá que hacer un uso temporal de los repositorios de Ubuntu, puesto que es en la única distro "Debian-like" que he encontrado paquete.

Ahora, no enmarranemos el sources.list quitando y poniendo lineas de otras distribuciones. Crearemos un nuevo list dentro de /etc/apt/sources.list.d (fijaos que la almohadilla significa con permisos de root, ya sea con "su" o con "sudo", y que no hay salto de línea):
# echo "deb http://es.archive.ubuntu.com/ubuntu hardy main contrib universe multiverse" > /etc/apt/sources.list.d/ubuntu.list
# echo "deb http://ppa.launchpad.net/c-korn/ubuntu hardy main" >> /etc/apt/sources.list.d/ubuntu.list
# apt-get update ; apt-get -y --purge remove vlc-* ; apt-get install -y --force-yes vlc
# mv /etc/apt/sources.list.d/ubuntu.list /etc/apt/sources.list.d/ubuntu.list.bak
# apt-get update

Este método lo aplicaremos hasta que la versión 0.9.2 (o superior) no esté, como mínimo, en unstable.

Vale, ya lo tenemos instalado, dependencias satisfechas, limpito otra vez el sources.list ... Ahora vamos a darle un aspecto "más KDE". Entrad en Herramientas -> Preferencias. Tendreis la primera pantalla, seleccionamos "todo" (abajo recuadrado en rojo):



Una vez dentro, en el árbol de la izquierda (esto ya os parecerá más al menú clásico del VLC), seleccionamos Interfaz -> Interfaces principales -> Qt, y desmarcad la opción que os pongo en rojo:



Personalmente también le he quitado el icono de la bandeja de entrada, pero eso ya va más al gusto de cada uno.

Y para que veais cómo queda de integrado, sin pieles (skins) ni nada, una captura de mi escritorio:

\ No newline at end of file diff --git a/source/_posts/2008-09-24-virtualbox-20-tambien-es-qt4.html b/source/_posts/2008-09-24-virtualbox-20-tambien-es-qt4.html deleted file mode 100644 index 599806c..0000000 --- a/source/_posts/2008-09-24-virtualbox-20-tambien-es-qt4.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: post -title: Virtualbox 2.0 también es QT4 -date: '2008-09-24T13:52:00.000-07:00' -author: David PG -categories: -- KDE -modified_time: '2015-02-17T07:18:34.913-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-5665658893863937681 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/09/virtualbox-20-tambien-es-qt4.html ---- - -Si no nos bastaba con que la gente del VLC nos diera la sorpresa de pasar sus widgets a QT4, resulta que VirtualBox, el virtualizador de sistemas operativos, también se pasa a estas librerías para mostrarnos su intefaz.

Aunque la configuración de la red más allá de virtualizar un sistema operativo resulta algo engorrosa, este programa hace auténticas virguerías en conseguir una virtualización casi perfecta (hay muchos artículos que explican cómo ejecutar una aplicación windows en un escritorio linux a través de VirtualBox y RDP) y es altamente recomendable para los que les guste probar distribuciones de linux, o experimentar con SSOO limpios o arreglados según la necesidad.

Puesto que la noticia la he leído en KDE-Hispano y a ellos pertenecen las capturas que he visto, os dejo el enlace para que le echeis un ojo: http://www.kdehispano.es/?q=content/lanzado-virtualbox-20 \ No newline at end of file diff --git a/source/_posts/2008-10-22-kde-42-los-mensajes-emergentes.html b/source/_posts/2008-10-22-kde-42-los-mensajes-emergentes.html deleted file mode 100644 index 312b1e1..0000000 --- a/source/_posts/2008-10-22-kde-42-los-mensajes-emergentes.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: KDE 4.2 "arreglará" los mensajes emergentes -date: '2008-10-22T02:17:00.000-07:00' -author: David PG -categories: -- KDE -- escritorio -modified_time: '2015-02-17T07:18:34.924-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-1310742146747073487 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/10/kde-42-los-mensajes-emergentes.html ---- - -KDE 4.2 tiene pensado salir como estable para finales de enero de 2009 (concretamente, el 27, según su planning), y poco a poco se va viendo lo que nos traerá esta nueva versión.

Uno de los detalles destacables es el "arreglo" de los mensajes emergentes. Para explicar un poco mejor, tomemos como ejemplo a kopete, el cliente de mensajería: cuando un usuario entra, el mensaje emergente aparece arriba, a la derecha de la pantalla. Lo mismo si nos abre una conversación y nos da a elegir si queremos abrir una ventana o ignorar el mensaje. Todo arriba a la derecha.

Ahora, el sistema de mensajes emergentes pertenece al plasmoide "systray", de manera que aparece donde tiene que aparecer:



Pero no sólo se queda en kopete, sino que va almacenando los mensajes emergentes para que vayan saliendo de manera organizada uno encima de otro. Además, se ha "plasmizado" para que tenga un aspecto visual más acorde al tema elegido.

Esta nueva mejora del systray no es la única: vuelve la ocultación de iconos y la inclusión de plasmoides dentro de la bandeja.

KDE 4.2 quizá sea lo que debió nacer como KDE 4.0 (por lo menos, para aquéllos que no entienden el lío de "KDE4 no es KDE 4.0" y cosas así), pero no podemos negar que está haciéndose un trabajo increíble para darnos una experiencia de escritorio cómoda y funcional.

Vía: http://aseigo.blogspot.com/2008/10/plasma-is-now-feature-complete.html \ No newline at end of file diff --git a/source/_posts/2008-10-31-qt-creator-un-posible-rad-para-qtkde.html b/source/_posts/2008-10-31-qt-creator-un-posible-rad-para-qtkde.html deleted file mode 100644 index f669b3f..0000000 --- a/source/_posts/2008-10-31-qt-creator-un-posible-rad-para-qtkde.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post -title: QT Creator, ¿un posible RAD para QT/KDE? -date: '2008-10-31T08:46:00.000-07:00' -author: David PG -categories: -- KDE -- trolltech -- qt -- programación -modified_time: '2015-02-17T07:18:34.936-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-1498905125349204704 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/10/qt-creator-un-posible-rad-para-qtkde.html ---- - -Los que nos dedicamos a la programación, ya sea como hobby (mi caso) o como parte del trabajo diario, tenemos que agradecer a Trolltech, la creadora de las bibliotecas QT, el nacimiento de esta nueva herramienta: QT Creator.

QT Creator se presenta como un IDE (Integrated Development Enviroment) ligero y multiplataforma diseñado para hacer más simple la tarea de crear aplicaciones basadas en QT4. Dispone de un asistente (wizard), ayuda rápida, autorelleno de sintaxis y compilador integrado en su versión para Windows (en Linux dispondríamos de los paquetes que vienen en nuestra distribución, con lo que no es problema ninguno).

Aquí os pongo un vídeo demostrativo (el mismo que aparece en la página de trolltech):







Yo lo he estado probando y me ha gustado bastante, acostumbrado que estoy a la interfaz de Delphi. Me falta, sin embargo, una gestión un poco mejor de las señales/slots, pero hay que darle tiempo al tiempo, puesto que la versión final saldrá a primeros del año que viene.

Noticia vista en barrapunto: http://softlibre.barrapunto.com/softlibre/08/10/31/0127204.shtml
Enlace a QT Creator, en la página de Trolltech: http://trolltech.com/developer/qt-creator \ No newline at end of file diff --git a/source/_posts/2008-11-07-estado-actual-de-k3b.html b/source/_posts/2008-11-07-estado-actual-de-k3b.html deleted file mode 100644 index 771188c..0000000 --- a/source/_posts/2008-11-07-estado-actual-de-k3b.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: Estado actual de k3b -date: '2008-11-07T14:17:00.000-08:00' -author: David PG -categories: -- KDE -- grabación -- k3b -modified_time: '2015-02-17T07:18:34.968-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-2591291933998629308 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/11/estado-actual-de-k3b.html ---- - -He conseguido compilar k3b desde su svn y realizado algunas capturas para que veais cómo va el proyecto. Pensad que k3b "sufre" un cambio muy radical en su transición a KDE4 por la implementación de phonon (para lo relacionado con el audio) y solid (hardware), y que son sólo 2 programadores.

Desde aquí mucho ánimo, que la cosa va bastante bien:

k3b_001

k3b_0022



k3b_0031

Como veis, es "sólo" la adaptación de k3b al entorno KDE4. Pero qué quereis que os diga, a mí ya me gustaba tal y como era en KDE3, con lo que contento y feliz de que siga por el mismo camino. \ No newline at end of file diff --git a/source/_posts/2008-11-07-objetivos-y-mejoras-de-kde-42.html b/source/_posts/2008-11-07-objetivos-y-mejoras-de-kde-42.html deleted file mode 100644 index 1515a30..0000000 --- a/source/_posts/2008-11-07-objetivos-y-mejoras-de-kde-42.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: Objetivos y mejoras de KDE 4.2 -date: '2008-11-07T11:20:00.000-08:00' -author: David PG -categories: -- KDE -- escritorio -- kde 4.2 -modified_time: '2015-02-17T07:18:34.947-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-7009676610318975693 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/11/objetivos-y-mejoras-de-kde-42.html ---- - -Puesto que hace mucho que no escribo en este blog (y eso que sabía el compromiso que tengo al separar mi antiguo blog en 2 para no mezclar vida privada y labor informática), me he puesto a mirar la página de techbase de KDE, donde figuran los planes y objetivos con cada versión grande.

Para la versión entrante, la 4.2, que saldrá a finales de Enero, tienen marcados los siguientes objetivos:

  • módulos KDevelop y KDevplatform

  • Marco de desarrollo en Decibel para VoIP y comunicación en tiempo real

  • Paquetes "Plasmagik" (de instalar por click) para plasma y un creador de add-ons

  • Un Kopete más pulido

  • Agregar KBlogger a KDE-PIM

  • Eigen 2 (librería de cálculo aritmético lineal) en kdesupport, usado en edu/office/games

  • Edición modal (a lo "VI") en Kate/KDevelop

  • Ark (gestor de archivos comprimidos) muy mejorado

  • Montones de pequeñas características


De las pequeñas características, sacado del feature plan, destaco las siguientes:

  • "Modo administrador" en SystemSettings

  • Un administrador de impresión, sustituto del extinto KDEPrint, llamado system-config-printer-kde

  • Integración con QtScript

  • Importar esquemas de colores de KDE3

  • aprendizaje básico de krunner

  • arrastre de iconos del panel al escritorio

  • soporte python en plasma

  • agrupación de iconos en la barra de tareas

  • plasmoides en el protector de pantalla

  • auto-ocultar panel

  • soporte para Google Gadgets

  • decoración de sombras de la ventana

  • ajuste personalizado de la velocidad de los efectos

  • efectos de cubo y magic lamp, conocidos de compiz

  • plasmoide de contactos basado en los encontrados en kopete

  • kget soporta torrents, ahora soportará el protocolo ed2k (edonkey/emule) gracias a mldonkey

  • applet para gestionar la red

  • Dragon Player, independiente de xine

  • anotaciones sonoras y de enlaces en okular

  • reducción de ojos rojos en Gwenview

  • backend de okular para faxes

  • página inicial de konqueror cambiada, mostrando los marcadores del usuario

  • zoom para imágenes en dolphin


Visto lo visto, no son pocas las novedades que nos esperan, algunas con más impaciencia que otras. Todo aquello que no se pueda implementar para la versión 4.2 (aunque la mayoría de lo que os he puesto es trabajo ya terminado o en progreso), saldrá para la 4.3, prevista para el 30 de junio de 2009, y cuyo plan de características aún no ha sido concretado. \ No newline at end of file diff --git a/source/_posts/2008-11-14-avidemux.html b/source/_posts/2008-11-14-avidemux.html deleted file mode 100644 index ac5198f..0000000 --- a/source/_posts/2008-11-14-avidemux.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: post -title: Avidemux "a-la-QT" -date: '2008-11-14T07:52:00.000-08:00' -author: David PG -categories: -- video -- debian -- qt -- edición -modified_time: '2015-02-17T07:18:34.979-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-510647583091899134 -blogger_orig_url: http://devopsysadmin.blogspot.com/2008/11/avidemux.html ---- - -Avidemux es un editor de videos muy similar en características al VirtualDub de otras plataformas. Ya conocía de la existencia de elección entre librería GTK y QT fuera de Linux para este programa, pero gracias al blog Ubuntu Life (tardais en ir a visitarlo), veo que también existe para la plataforma del pingüino.

Para tenerlo disponible en Debian (por problemas de licencia, supongo), es necesario tener disponible el repositorio debian-multimedia de Marillat, así que aseguraos de visitar su web para comprobar que teneis en vuestro sources.list el repositorio antes de intentar instalarlo:

apt-get install avidemux-qt \ No newline at end of file diff --git a/source/_posts/2009-01-14-critica-humoristica-wine.html b/source/_posts/2009-01-14-critica-humoristica-wine.html deleted file mode 100644 index a426ca9..0000000 --- a/source/_posts/2009-01-14-critica-humoristica-wine.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: Crítica humorística a Wine -date: '2009-01-14T06:30:00.000-08:00' -author: David PG -categories: -- linux -- videojuegos -modified_time: '2015-02-17T09:07:13.053-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-6430199140654112718 -blogger_orig_url: http://devopsysadmin.blogspot.com/2009/01/critica-humoristica-wine.html ---- - -Wine se encuentra actualmente en su versión de desarrollo 1.1.12 . Desde que el proyecto viera la luz, muchos cambios han pasado por su código fuente, incluída la incorporación/implementación del código necesario para muchas de las funciones de DirectX (¡y van por la 10!), lo que es un logro digno de admiración.

No obstante, y pretendiendo ser realistas, las implementaciones del código aún distan de ser suficientes para permitir cualquier juego. Si bien puedo hacer que funcionen títulos como "Tomb Raider Anniversary", "World of Warcraft" o "The Witcher", en algunos otros casos debemos decir que sí, que ejecutarse se ejecuta, pero aún queda para decir que es "jugable". Por lo menos a ojos del equipo de desarrollo del videojuego.

Tal es el caso del Principe de Persia 2008, calidad artística donde las haya, que puede instalarse en Linux (eso nos cuentan los chicos de PlayOnLinux) aunque yo diría que lo que puede hacerse es "ejecutarse": hay que bajar la resolución al mínimo, quitar las texturas HD... en fin, y cuando consigues que funcione, ve guardando cada poco, que puede írsete al cuerno y aparecer tu bonito escritorio (con compiz o sin él).

Os pongo una muestra de cómo queda el juego según la plataforma:

Win/XBox360

pop_win_cara
pop_win_paisaje

Linux, sin texturas, a baja resolución, rezándole a algún beato:

pop_linux_cara pop_linux_paisaje

Bueno, os dejo que tengo un mago que se no sube de nivel solito. Que vuestros días sean largos, y escasos los contratiempos ;) \ No newline at end of file diff --git a/source/_posts/2009-01-14-nokia-anade-la-licencia-lgpl-qt.html b/source/_posts/2009-01-14-nokia-anade-la-licencia-lgpl-qt.html deleted file mode 100644 index 19f8b0f..0000000 --- a/source/_posts/2009-01-14-nokia-anade-la-licencia-lgpl-qt.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: Nokia añade la licencia LGPL a QT -date: '2009-01-14T03:31:00.000-08:00' -author: David PG -categories: -- qt -- programación -modified_time: '2015-02-17T07:18:34.990-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-7840161033339976132 -blogger_orig_url: http://devopsysadmin.blogspot.com/2009/01/nokia-anade-la-licencia-lgpl-qt.html ---- - -
Si bien hasta hoy se podía elegir entre la licencia GPL y no pagar por el kit de desarrollo de QT, o su versión comercial y así mantener como cerrado el código generado, Nokia ha añadido el tipo de licencia LGPL tanto a la interfaz de usuario como al kit de desarrollo a partir de la versión 4.5 .

Traduciendo del enlace original (http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt), El paso a la licencia LGPL proveerá a los desarrolladores de código fuente tanto libre como comercial una licencia más permisiva que la GPL y, por tanto, aumentar la flexibilidad. Además, los repositorios del código de QT estarán públicamente disponibles y alentará las contribuciones de las comunidades de desarrolladores de escritorio y aplicaciones embebidas. Con estos cambios, los programadores podrán guiar de manera activa la evolución del framework de QT.

Las versiones anteriores no ven modificada su licencia GPL.

Mientras escribo este post, veo que en Barrapunto se han hecho eco de la noticia: http://softlibre.barrapunto.com/article.pl?sid=09/01/14/0849214&from=rss

Veremos si este cambio de licencia hace que los desarrolladores eligen QT para sus aplicaciones en multiplataforma. Personalmente, todo cambio que dé libertad al programador para desarrollar (y distribuir) un producto, es bienvenido.
\ No newline at end of file diff --git a/source/_posts/2009-02-08-repositorio-para-testingamd64.html b/source/_posts/2009-02-08-repositorio-para-testingamd64.html deleted file mode 100644 index f2c4b2e..0000000 --- a/source/_posts/2009-02-08-repositorio-para-testingamd64.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: Repositorio para testing/amd64 -date: '2009-02-07T15:51:00.000-08:00' -author: David PG -categories: -- linux -- debian -modified_time: '2015-02-17T07:18:35.011-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-36893920802400325 -blogger_orig_url: http://devopsysadmin.blogspot.com/2009/02/repositorio-para-testingamd64.html ---- - -He puesto en marcha un pequeño repositorio de paquetes para debian testing (actualmente lenny, en breve squeeze) para la arquitectura amd64.

Ahora mismo sólo está el vlc 0.9.8a, recompilado de los paquetes de ubuntu más un parche que arregla el problema del video integrado, y poca cosa más. Iré agregando según pase el tiempo y la necesidad :)

Los paquetes no van firmados (otra cosa a la que dedicarle tiempo). Os pongo la línea para sources.list:

deb http://davidp.dyndns.org:8080/debian debian main \ No newline at end of file diff --git a/source/_posts/2009-02-14-kde-50-lanzado.html b/source/_posts/2009-02-14-kde-50-lanzado.html deleted file mode 100644 index 7a975e4..0000000 --- a/source/_posts/2009-02-14-kde-50-lanzado.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: Debian 5.0 "lenny" lanzado -date: '2009-02-14T03:48:00.000-08:00' -author: David PG -categories: -- linux -- debian -modified_time: '2015-02-24T02:47:48.146-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-5511967428951518203 -blogger_orig_url: http://devopsysadmin.blogspot.com/2009/02/kde-50-lanzado.html ---- - -Como ya anunciaran en su momento los chicos de Debian, Lenny ya ha pasado a ser la nueva versión estable de Debian, tras 22 meses de desarrollo desde la salida de Etch. Soporta 12 arquitecturas de procesador e incluye las versiones más estables (que no las últimas) de KDE, Gnome, Xfce y LXDE.

Esto hace que la nueva versión de testing sea Squeeze. Personalmente yo suelo llamarlas por el número, testing y unstable, pero para gustos los colores.

Anuncio de versión: http://lists.debian.org/debian-announce/2009/msg00002.html

Página oficial de Debian: http://www.debian.org

Y para los que usamos testing, otra buena noticia: se está incluyendo poco a poco la actualización de KDE a 4.2, ahora que la estable ha salido, a la versión unstable, que es el paso previo para testing/squeeze.

Feliz día de los enamorados (de Debian) :D \ No newline at end of file diff --git a/source/_posts/2015-02-17-recuperando-el-blog.html b/source/_posts/2015-02-17-recuperando-el-blog.html deleted file mode 100644 index 77b1d14..0000000 --- a/source/_posts/2015-02-17-recuperando-el-blog.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Recuperando el blog -date: '2015-02-17T06:24:00.000-08:00' -author: David PG -categories: -modified_time: '2015-02-17T07:18:34.957-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-6753694480701903105 -blogger_orig_url: http://devopsysadmin.blogspot.com/2015/02/recuperando-el-blog.html ---- - -¡Buenas!

Han pasado unas cuantas (CUANTAS) cosas desde que hice mi última entrada, tanto en mi vida como en el mundo linux. Desconozco la frecuencia con la que escribiré de nuevo, pero quiero darle un uso de sysadmin a este pobre blog, añadiendo trucos, utilidades y tuneaje, aparte de hablar de los pequeños proyectos que tengo en GitHub.

Así que, abracetes y ¡let the Hunger Games begin! \ No newline at end of file diff --git a/source/_posts/2015-02-17-truco-hacer-un-pgdump-aprovechando-los.html b/source/_posts/2015-02-17-truco-hacer-un-pgdump-aprovechando-los.html deleted file mode 100644 index 38810c4..0000000 --- a/source/_posts/2015-02-17-truco-hacer-un-pgdump-aprovechando-los.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: Hacer un pg_dump aprovechando los cores de la máquina -date: '2015-02-17T07:06:00.000-08:00' -author: David PG -categories: -- linux -- trucos -- postgresql -modified_time: '2015-02-18T08:35:15.824-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-8416402531873167492 -blogger_orig_url: http://devopsysadmin.blogspot.com/2015/02/truco-hacer-un-pgdump-aprovechando-los.html ---- - -

Desde la versión 9.3, postgreSQL permite hacer dumps de la base de datos en forma paralela, aprovechando así el número de cores de la máquina.

-

En una forma rápida, podemos lanzar este proceso:

-

pg_dump -h $MAQUINA -U $USER -d $DATABASE -Fd -j `nproc` -f $DESTINO

-

Las variables son autorreferentes, con lo que la gracia de este comando se encuentra en la opción -Fd (obligatoria para que use diferentes cores), que realiza el dump en un directorio en lugar de un archivo; y la opción -j, que refiere al número de procesos que se lanzan simultáneamente. En este caso, hacemos uso de lo que devuelve nproc para levantar tantos procesos como núcleos.

-

Un pequeño script de backup de base de datos local (perfecto para meter en un cronjob del usuario postgres) sería:

- -{% highlight bash %} -#!/bin/bash -## This script will create a backup for each database listed in the DATABASES variable -## Use as postgres user or add the -U [username] to the pg_dump line - -DATABASES="template1 db other_db" -CORES=`nproc` -TARGET_FOLDER=/var/backups - -for DATABASE in $DATABASES; do - mkdir -p $TARGET_FOLDER/$DATABASE - pg_dump -d $DATABASE -Fd -j $CORES -f $TARGET_FOLDER/$DATABASE -done -{% endhighlight %} \ No newline at end of file diff --git a/source/_posts/2015-02-19-sendlines-un-expect-simplificado.html b/source/_posts/2015-02-19-sendlines-un-expect-simplificado.html deleted file mode 100644 index dda5462..0000000 --- a/source/_posts/2015-02-19-sendlines-un-expect-simplificado.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: post -title: sendlines, un expect simplificado -date: '2015-02-19T08:17:00.001-08:00' -author: David PG -categories: -- linux -- automatización -- python -- trucos -modified_time: '2015-02-19T08:29:22.925-08:00' -blogger_id: tag:blogger.com,1999:blog-4659522467025728448.post-3308858564576528049 -blogger_orig_url: http://devopsysadmin.blogspot.com/2015/02/sendlines-un-expect-simplificado.html ---- - -

Para automatizar tareas siempre había hecho uso de autoexpect, ya que, una vez realizado (y guardado) todo la primera vez, sólo había que hacer un par de apaños al script resultante. Sin embargo, hay veces que no necesitamos algo tan sofisticado o no queremos instalar tcl/tsh en la máquina.

-

No hay problema: un pequeño script en python lee de un archivo de texto y le manda, línea a línea, su contenido al ejecutable que hayamos elegido.

-

Seguramente haya muchas cosas por pulir, pero hace lo que tiene que hacer (Pricipio KISS, que le llaman ;) ).

-

Uso: sendlines -f Fichero_de_texto -c "comando a ejecutar" [ -d delay ], -donde:
-

    -
  • fichero_de_texto: archivo que contiene las lineas que se van a mandar. No contempla comentarios, lo manda del tirón
  • -
  • comando: orden que recibirá las entradas de fichero_de_texto. Si tiene parámetros, poner todo el comando entre comillas (ej: "grep -v grep")
  • -
  • delay: tiempo entre lineas. Opcional, espera un tiempo (en segundos) entre cada linea que manda
  • -
-

- -{% highlight python %} -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import subprocess -import time -import sys, getopt - -def run(cmd,textFile,delay): - with open(textFile,'r') as text: - content=text.readlines() - p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stdin=subprocess.PIPE) - for line in content: - p.stdin.write(line+'\n') - if(delay): time.sleep(float(delay)) - p.communicate()[0] - p.stdin.close() - -def usage(): - print ''' - Usage: sendlines -f textFile -c "COMMAND" [ -d DELAY ] - - textFile: Text file where read lines from. Mandatory. - - COMMAND: Command to be executed (if there are any arguments to be sent, must be put all between quotes). Mandatory - - DELAY: Time (in seconds) to wait between sending lines. Optional. - ''' -if __name__ == "__main__": - textFile = None - command = None - delay = None - try: - opts, args = getopt.getopt(sys.argv[1:], "f:c:d:", ["file=", "command=", "delay="]) - except getopt.GetoptError as err: - # print help information and exit: - print str(err) # will print something like "option -a not recognized" - sys.exit(2) - for o, a in opts: - if o in ("-f", "--file"): - textFile = a - elif o in ("-c", "--command"): - command = a.split(' ') - elif o in ("-d", "--delay"): - delay = a - else: - assert False, "unhandled option" - usage() - if(command and textFile): - run(command,textFile,delay) - else: - usage() - print 'Missing argument(s). Exit\n' - sys.exit(2) -{% endhighlight %} \ No newline at end of file diff --git a/source/_posts/2015-02-23-passwords-con-caracteres-aleatorios.html b/source/_posts/2015-02-23-passwords-con-caracteres-aleatorios.html deleted file mode 100644 index 940cfcb..0000000 --- a/source/_posts/2015-02-23-passwords-con-caracteres-aleatorios.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: post -title: Passwords con caracteres aleatorios -date: '2015-02-23T07:01:00.000-08:00' -author: David PG -categories: -- password -- python -modified_time: '2015-02-23T07:03:48.233-08:00' -comments: true ---- - -

En muchas ocasiones, cuando tenemos que crear un servicio que pide usuario/password, tendemos al uso de passwords simples o poco elaboradas. Tanto si es para un uso personal como si es para compartir información entre usuarios (este, quizás, más importante aún securizar), las password simples o basadas en diccionarios no son del todo una buena idea.

Este pequeño script de python genera una clave de N caracteres aleatorios (pasados por argumento, o 10 en su defecto), que puede añadir símbolos indicando el argumento "@".

- -{% highlight python %} -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import string,random,sys - -dictionary = string.ascii_letters + string.digits -dictionary_extra = '@.-!~' -N = 10 - -if(len(sys.argv)>1): - if(sys.argv[1][0]=='@'): - dictionary += dictionary_extra - if(len(sys.argv[1])>1): - N=int(sys.argv[1][1:]) - else: - N = int(sys.argv[1]) -print ''.join(random.SystemRandom().choice(dictionary) for _ in range(N)) -{% endhighlight %} - - -

Ejemplos de uso:
-

-$ python randompasswd @20
-Dk5nl8w~.WxrkEj94!V~
-
-$ python randompasswd @
-0KAiU0z@rC
-
-$ python randompasswd
-eqUL9Kaw22G1QFc
-
\ No newline at end of file diff --git a/source/assets/jwplayer/glow/controlbar/background.png b/source/assets/jwplayer/glow/controlbar/background.png deleted file mode 100644 index 59a2322..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/background.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/blankButton.png b/source/assets/jwplayer/glow/controlbar/blankButton.png deleted file mode 100644 index 010159f..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/blankButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/divider.png b/source/assets/jwplayer/glow/controlbar/divider.png deleted file mode 100644 index 021685f..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/divider.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png deleted file mode 100644 index e06aa50..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png deleted file mode 100644 index 4d23d00..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/muteButton.png b/source/assets/jwplayer/glow/controlbar/muteButton.png deleted file mode 100644 index 55de26a..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/muteButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png deleted file mode 100644 index 08bf066..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png deleted file mode 100644 index 2229507..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png deleted file mode 100644 index 6668f38..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButton.png b/source/assets/jwplayer/glow/controlbar/pauseButton.png deleted file mode 100644 index 23706cd..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png deleted file mode 100644 index 252e721..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/playButton.png b/source/assets/jwplayer/glow/controlbar/playButton.png deleted file mode 100644 index 345e5e8..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/playButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/source/assets/jwplayer/glow/controlbar/playButtonOver.png deleted file mode 100644 index 3fe2848..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/playButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png deleted file mode 100644 index 5e151d6..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png deleted file mode 100644 index e89fc5c..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png deleted file mode 100644 index ae47e90..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png b/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png deleted file mode 100644 index 03d2a98..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png deleted file mode 100644 index 92d52f9..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/source/assets/jwplayer/glow/controlbar/unmuteButton.png deleted file mode 100644 index 6b8ec46..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png deleted file mode 100644 index 5a76e0b..0000000 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/background.png b/source/assets/jwplayer/glow/display/background.png deleted file mode 100644 index 08be16d..0000000 Binary files a/source/assets/jwplayer/glow/display/background.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/bufferIcon.png b/source/assets/jwplayer/glow/display/bufferIcon.png deleted file mode 100644 index 5c22bbc..0000000 Binary files a/source/assets/jwplayer/glow/display/bufferIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/muteIcon.png b/source/assets/jwplayer/glow/display/muteIcon.png deleted file mode 100644 index 2b1e6c6..0000000 Binary files a/source/assets/jwplayer/glow/display/muteIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/playIcon.png b/source/assets/jwplayer/glow/display/playIcon.png deleted file mode 100644 index 5705ded..0000000 Binary files a/source/assets/jwplayer/glow/display/playIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/dock/button.png b/source/assets/jwplayer/glow/dock/button.png deleted file mode 100644 index 08be16d..0000000 Binary files a/source/assets/jwplayer/glow/dock/button.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/glow.xml b/source/assets/jwplayer/glow/glow.xml deleted file mode 100644 index 71bdced..0000000 --- a/source/assets/jwplayer/glow/glow.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -