Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Introducing the MetaInfo Creator

This year’s FOSDEM conference was a lot of fun – one of the things I always enjoy most about this particular conference (besides having some of the outstanding food you can get in Brussels and meeting with friends from the free software world) is the ability to meet a large range of new people who I wouldn’t usually have interacted with, or getting people from different communities together who otherwise would not meet in person as each bigger project has their own conference (for example, the amount of VideoLAN people is much lower at GUADEC and Akademy compared to FOSDEM). It’s also really neat to have GNOME and KDE developers within reach at the same place, as I care about both desktops a lot.

An unexpected issue

This blog post however is not about that. It’s about what I learned when talking to people there about AppStream, and the outcome of that. Especially when talking to application authors but also to people who deal with larger software repositories, it became apparent that many app authors don’t really want to deal with the extra effort of writing metadata at all. This was a bit of a surprise to me, as I thought that there would be a strong interest for application authors to make their apps look as good as possible in software catalogs.

A bit less surprising was the fact that people apparently don’t enjoy reading a large specification, reading a long-ish intro guide with lots of dos and don’ts or basically reading any longer text at all before being able to create an AppStream MetaInfo/AppData file describing their software.

Another common problem seems to be that people don’t immediately know what a “reverse-DNS ID” is, the format AppStream uses for uniquely identifying each software component. So naturally, people either have to read about it again (bah, reading! 😜) or make something up, which occasionally is wrong and not the actual component-ID their software component should have.

The MetaInfo Creator

It was actually suggested to me twice that what people really would like to have is a simple tool to put together a MetaInfo file for their software. Basically a simple form with a few questions which produces the final file. I always considered this a “nice to have, but not essential” feature, but now I was convinced that this actually has a priority attached to it.

So, instead of jumping into my favourite editor and writing a bunch of C code to create this “make MetaInfo file” form as part of appstreamcli, this time I decided to try what the cool kids are doing and make a web application that runs in your browser and creates all metadata there.

So, behold the MetaInfo Creator! If you click this link, you will end up at an Angular-based web application that will let you generate MetaInfo/AppData files for a few component-types simply by answering a set of questions.

The intent was to make this tool as easy to use as possible for someone who basically doesn’t know anything about AppStream at all. Therefore, the tool will:

  • Generate a rDNS component-ID suggestion automatically based on the software’s homepage and name
  • Fill out default values for anything it thinks it has enough data for
  • Show short hints for what values we expect for certain fields
  • Interactively validate the entered value, so people know immediately when they have entered something invalid
  • Produce a .desktop file as well for GUI applications, if people select the option for it
  • Show additional hints about how to do more with the metadata
  • Create some Meson snippets as pointers how people can integrate the MetaInfo files into projects using the Meson build system

For the Meson feature, the tool simply can not generate a “use this and be done” script, as each Meson snippet needs to be adjusted for the individual project. So this option is disabled by default, but when enabled, a few simple Meson snippets will be produced which can be easily adjusted to the project they should be part of.

The tool currently does not generate any release information for a MetaInfo file at all, This may be added in future. The initial goal was to have people create any MetaInfo file in the first place, having projects also ship release details would be the icing on the cake.

I hope people find this project useful and use it to create better MetaInfo files, so distribution repositories and Flatpak repos look better in software centers. Also, since MetaInfo files can be used to create an “inventory” of software and to install missing stuff as-needed, having more of them will help to build smarter software managers, create smaller OS base installations and introspect what software bundles are made of easily.

I welcome contributions to the MetaInfo Creator! You can find its source code on GitHub. This is my first web application ever, the first time I wrote TypeScript and the first time I used Angular, so I’d bet a veteran developer more familiar with these tools will cringe at what I produced. So, scratch that itch and submit a PR! 😉 Also, if you want to create a form for a new component type, please submit a patch as well.

C developer’s experience notes for Angular, TypeScript, NodeJS

This section is just to ramble a bit about random things I found interesting as a developer who mostly works with C/C++ and Python and stepped into the web-application developer’s world for the first time.

For a project like this, I would usually have gone with my default way of developing something for the web: Creating a Flask-based application in Python. I really love Python and Flask, but of course using them would have meant that all processing would have had to be done on the server. One the one hand I could have used libappstream that way to create the XML, format it and validate it, but on the other hand I would have had to host the Python app on my own server, find a place at Purism/Debian/GNOME/KDE or get it housed at Freedesktop somehow (which would have taken a while to arrange) – and I really wanted to have a permanent location for this application immediately. Additionally, I didn’t want people to send the details of new unpublished software to my server.

TypeScript

I must say that I really like TypeScript as a language compared to JavaScript. It is not really revolutionary (I looked into Dart and other ways to compile $stuff to JavaScript first), but it removes just enough JavaScript weirdness to be pleasant to use. At the same time, since TS is a superset of JS, JavaScript code is valid TypeScript code, so you can integrate with existing JS code easily. Picking TS up took me much less than an hour, and most of its features you learn organically when working on a project. The optional type-safety is a blessing and actually helped me a few times to find an issue. It being so close to JS is both a strength and weakness: On the one hand you have all the JS oddities in the language (implicit type conversion is really weird sometimes) and have to basically refrain from using them or count on the linter to spot them, but on the other hand you can immediately use the massive amount of JavaScript code available on the web.

Angular

The Angular web framework took a few hours to pick up – there are a lot of concepts to understand. But ultimately, it’s manageable and pretty nice to use. When working at the system level, a lot of complexity is in understanding how the CPU is processing data, managing memory and using the low-level APIs the operating system provides. With the web application stuff, a lot of the complexity for me was in learning about all the moving parts the system is comprised of, what their names are, what they are, and what works with which. And that is not a flat learning curve at all. As C developer, you need to know how the computer works to be efficient, as web developer you need to know a bunch of different tools really well to be productive.

One thing I am still a bit puzzled about is the amount of duplicated HTML templates my project has. I haven’t found a way to reuse template blocks in multiple components with Angular, like I would with Jinja2. The documentation suggests this feature does not exist, but maybe I simply can’t find it or there is a completely different way to achieve the same result.

NPM Ecosystem

The MetaInfo Creator application ultimately doesn’t do much. But according to GitHub, it has 985 (!!!) dependencies in NPM/NodeJS. And that is the bare minimum! I only added one dependency myself to it. I feel really uneasy about this, as I prefer the Python approach of having a rich standard library instead of billions of small modules scattered across the web. If there is a bug in one of the standard library functions, I can submit a patch to Python where some core developer is there to review it. In NodeJS, I imagine fixing some module is much harder.

That being said though, using npm is actually pretty nice – there is a module available for most things, and adding a new dependency is easy. NPM will also manage all the details of your dependency chain, GitHub will warn about security issues in modules you depend on, etc. So, from a usability perspective, there isn’t much to complain about (unlike with Python, where creating or using a module ends up as a “fight the system” event way too often and the question “which random file do I need to create now to achieve what I want?” always exists. Fortunately, Poetry made this a bit more pleasant for me recently).

So, tl;dr for this section: The web application development excursion was actually a lot of fun, and I may make more of those in future, now that I learned more about how to write web applications. Ultimately though, I enjoy the lower-level software development and backend development a bit more.

Summary

Check out the MetaInfo Creator and its source code, if you want to create MetaInfo files for a GUI application, console application, addon or service component quickly.

a silhouette of a person's head and shoulders, used as a default avatar

Richard Stallman de gira por la Comunidad Valenciana

Este mes de marzo promete ser épico. Si nada lo impide vamos a tener este 2020 a Richard Stallman de gira por la Comunidad Valenciana en sus 3 capitales: Alicante, Castellón y València. Todo un gran acontecimiento que debemos promocionar al máximo y este blog no va a quedarse con los brazos cruzados.

Richard Stallman de gira por la Comunidad Valenciana

Richard Stallman de gira por la Comunidad ValencianaNo es la primera vez que está por mi tierra, estuvo en 2016 y en el 2018, pero me los perdí. En esta ocasión me pilla muy cerca, y en un día y una hora que hacen que las posibilidades de poder asistir son muy altas.

De esta forma, según podemos leer en la página web de la Asociación GNU/Linux València (si, ya es una asociación, ¡asociate!) uno de los padres del Software Libre, Richard Stallman, va a realizar una pequeña gira por la Comunidad Valenciana.

Lo datos básicos son los siguientes:

  • Miércoles 25 18:30 Sala La Mutant. Carrer de Joan Verdeguer, 22 46024 València
  • Viernes 27 16:00 E dificio IVAM-CADA. Calle Rigoberto Albors, 8 03801 Alcoy Alicante
  • Lunes 30 18:30 Sala La Bohemia. Calle Ciscar, 14 12003 Castellón

Vía: GNU/Linux València

¿Quién es Richard Stallman?

Por si alguien no lo conoce, a principios de los ochenta Richard M. Stallman, un físico, decidió abandonar su trabajo en el MIT para emprender el duro camino de desarrollar por completo un sistema operativo y aplicaciones para los usuarios que fuera completamente “libre”. A este proyecto se le conoce como GNU. Así que fundó la Free Software Foundation (FSF) y empezó a asentar las bases jurídicas para compartir legalmente el código de los programas, creando así las licencias libres como la GPL.

En la actualidad Richard ya no trabaja como desarrollador de software, está dedicado en cuerpo y alma a liderar el movimiento del software libre y dedica la mayor parte de su tiempo en dar conferencias alrededor del mundo y atender a los medios de comunicación.

the avatar of Chun-Hung sakana Huang

使用 curl 測試 CDN 小記

使用 curl 測試 CDN 小記

OS: openSUSE Leap 15.1
Curl: 7.60.0

因為公司也有 CDN 的服務, 所以就來 study 一下如何測試 CDN

找了網路上的文章來進行實驗

> curl  -I  img1.momoshop.com.tw

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 206
Connection: keep-alive
Date: Thu, 13 Feb 2020 06:37:14 GMT
Last-Modified: Wed, 04 Sep 2019 08:33:23 GMT
ETag: "5d6f76d3-ce"
Expires: Fri, 12 Feb 2021 06:37:14 GMT
Cache-Control: max-age=31536000
X-Image-Server: a1-imgweb62
X-Cache-Server: a1-rproxy64
X-Cache-Status: HIT
Cache-Control: public
Accept-Ranges: bytes
X-Cache: Hit from cloudfront
Via: 1.1 ff0896bca963fdb839934a38daad05c9.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: TPE50-C1
X-Amz-Cf-Id: s_DGUUBq7VKqDZprbRdA75kJeG5So0PLUwMRyWjqwA4TxjSefOmfEg==
Age: 1923399


  • -I, --head (HTTP  FTP FILE) Fetch the  headers only! 顯示 Headers
  • Cache-Control:
  • X-Cache: 是否在 CDN 有快取
    • HIT: 在 CDN 上有快取
    • MISS: 在 CDN 上面沒有快取, 會跟原站抓
  • X-Amz-Cf-Pop: 這個欄位是快取的站, 這邊可以觀察是 Taipei 的 Pop 點
    • 但是不同的供應商, 會有不同的欄位, Cloudflare 可能就是 CF-RAY: 56fc8a38f94545d0-TPE
  • ETag:

  • Expires: 過期時間
    • 瀏覽器收到這個 Response 之後就會把這個資源給快取起來,當下一次使用者再度造訪這個頁面或是要求這個圖片的資源的時候,瀏覽器會檢視「現在的時間」是否有超過這個 Expires。如果沒有超過的話,那瀏覽器「不會發送任何 Request」,而是直接從電腦裡面已經存好的 Cache 拿資料。

  • RFC2616 規範 max-age 會蓋掉 Expires, 所以實際上用到的是 Cache-Control: max-age



剛剛是針對某個網站
哪如果是針對 CDN 可能快取的物件呢? 

> curl -I  https://img1.momoshop.com.tw/goodsimg/0006/750/353/6750353_L.jpg?t=1581517754

HTTP/2 200 
content-type: image/jpeg
content-length: 22654
date: Fri, 06 Mar 2020 13:40:47 GMT
last-modified: Wed, 28 Aug 2019 15:00:03 GMT
etag: "5d6696f3-587e"
expires: Sat, 06 Mar 2021 13:40:47 GMT
cache-control: max-age=31536000
x-image-server: b1-imgweb61
access-control-allow-origin: *
access-control-max-age: 1000
access-control-allow-methods: POST, GET, OPTIONS, DELETE, PUT
access-control-allow-headers: x-requested-with, Content-Type, origin, authorization, accept, client-security-token
x-cache-server: a1-rproxy65
x-cache-status: HIT
cache-control: public
accept-ranges: bytes
x-cache: Miss from cloudfront
via: 1.1 5c4e99b05f9fd6102a3e039a6bd98968.cloudfront.net (CloudFront)
x-amz-cf-pop: TPE50-C1
x-amz-cf-id: JrqvYZNlLjV5zHS323SyuQ8pqzJgciSDOW4sEl1kl1Wj6ky_D4jWjg==

上面有提到過的就不重提
  • X-cache: Miss from cloudfront ( Cloudfront 上面沒有快取 ), 所以 CDN 會跟原站抓
    • 這邊也可以觀察到沒有 age 的 header, 也就是說沒有物件在 CDN 上已經快取的時間
  • 也可以去觀察 x-cache-server 以及 x-image-server 資訊
  • last-modified:
    • 會跟 If-Modified-Since 搭配使用, 如果超過時間但是沒有變動, 還是會從快取出

很短的時間重新抓一次

> curl -I https://img1.momoshop.com.tw/goodsimg/0006/750/353/6750353_L.jpg?t=1581517754

HTTP/2 200 
content-type: image/jpeg
content-length: 22654
date: Fri, 06 Mar 2020 13:40:47 GMT
last-modified: Wed, 28 Aug 2019 15:00:03 GMT
etag: "5d6696f3-587e"
expires: Sat, 06 Mar 2021 13:40:47 GMT
cache-control: max-age=31536000
x-image-server: b1-imgweb61
access-control-allow-origin: *
access-control-max-age: 1000
access-control-allow-methods: POST, GET, OPTIONS, DELETE, PUT
access-control-allow-headers: x-requested-with, Content-Type, origin, authorization, accept, client-security-token
x-cache-server: a1-rproxy65
x-cache-status: HIT
cache-control: public
accept-ranges: bytes
x-cache: Hit from cloudfront
via: 1.1 41d05f95698dc73a0a8a2f90b9eb739a.cloudfront.net (CloudFront)
x-amz-cf-pop: TPE50-C1
x-amz-cf-id: YL_Ii4eNQTB0VfTIlpSo77A8cHB4aOk7Mv_K4dhix_OqBhbW6tkqHw==
age: 28

  • 這邊可以觀察到 CloudFront 已經有資料, 然後也有 age 的資料

接下來進行另外一個測試 就是 支援 TLS 的版本
現在 TLS 版本的支援, 很多瀏覽器都會要求到一定的 TLS 版本, 目前 大概都要支援到 TLS 1.2 以上的版本

> curl  -I  -v  --tlsv1.0  https://img1.momoshop.com.tw

* Rebuilt URL to: https://img1.momoshop.com.tw/
*   Trying 13.35.153.7...
* TCP_NODELAY set
* Connected to img1.momoshop.com.tw (13.35.153.7) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.0 (OUT), TLS handshake, Client hello (1):
* TLSv1.0 (IN), TLS alert, Server hello (2):
* error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
* stopped the pause stream!
* Closing connection 0
curl: (35) error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

  • 這邊使用 -v 來顯示詳細資訊
  • --tlsv1.0 指定使用 TLS 1.0 協定
  • 這邊可以觀察到 使用 TLS 1.0 是被拒絕的

接下來嘗試 TLS 1.1 and TLS 1.2

> curl  -I  -v --tlsv1.1  https://img1.momoshop.com.tw

* Rebuilt URL to: https://img1.momoshop.com.tw/
*   Trying 13.35.153.65...
* TCP_NODELAY set
* Connected to img1.momoshop.com.tw (13.35.153.65) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.1 (OUT), TLS handshake, Client hello (1):
* TLSv1.1 (IN), TLS handshake, Server hello (2):
* TLSv1.1 (IN), TLS handshake, Certificate (11):
* TLSv1.1 (IN), TLS handshake, Server key exchange (12):
* TLSv1.1 (IN), TLS handshake, Server finished (14):
* TLSv1.1 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.1 (OUT), TLS change cipher, Client hello (1):
* TLSv1.1 (OUT), TLS handshake, Finished (20):
* TLSv1.1 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.1 / ECDHE-RSA-AES128-SHA
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=*.momoshop.com.tw
*  start date: Jun  3 00:00:00 2019 GMT
*  expire date: Jul  3 12:00:00 2020 GMT
*  subjectAltName: host "img1.momoshop.com.tw" matched cert's "*.momoshop.com.tw"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x564c5fcb9040)
> HEAD / HTTP/2
> Host: img1.momoshop.com.tw
> User-Agent: curl/7.60.0
> Accept: */*
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200 
HTTP/2 200 

> curl -I -v --tlsv1.2 https://img1.momoshop.com.tw

* Rebuilt URL to: https://img1.momoshop.com.tw/
*   Trying 13.35.153.7...
* TCP_NODELAY set
* Connected to img1.momoshop.com.tw (13.35.153.7) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=*.momoshop.com.tw
*  start date: Jun  3 00:00:00 2019 GMT
*  expire date: Jul  3 12:00:00 2020 GMT
*  subjectAltName: host "img1.momoshop.com.tw" matched cert's "*.momoshop.com.tw"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x56535129a040)
> HEAD / HTTP/2
> Host: img1.momoshop.com.tw
> User-Agent: curl/7.60.0
> Accept: */*
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200 
HTTP/2 200 

  • 其實如果沒有特別指定, 會用比較高的版本去連接
  • 這邊可以觀察 TLS 1.1 and TLS 1.2 都支援

同場加映:
然後也可以用另外一個指令來檢查 TLS, 就是 sslscan 指令

> sslscan  https://img1.momoshop.com.tw

Version: 1.11.10
OpenSSL 1.0.2p-fips  14 Aug 2018

OpenSSL version does not support SSLv2
SSLv2 ciphers will not be detected

OpenSSL version does not support SSLv3
SSLv3 ciphers will not be detected
Testing SSL server img1.momoshop.com.tw on port 443 using SNI name img1.momoshop.com.tw

  TLS Fallback SCSV:
Server does not support TLS Fallback SCSV

  TLS renegotiation:
Session renegotiation not supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.2  128 bits ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2 128 bits  ECDHE-RSA-AES128-SHA256       Curve P-256 DHE 256
Accepted  TLSv1.2 128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2 256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve P-256 DHE 256
Accepted  TLSv1.2 256 bits  ECDHE-RSA-AES256-SHA384       Curve P-256 DHE 256
Accepted  TLSv1.2 256 bits  ECDHE-RSA-AES256-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2 128 bits  AES128-GCM-SHA256            
Accepted  TLSv1.2 256 bits  AES256-GCM-SHA384            
Accepted  TLSv1.2 128 bits  AES128-SHA256                
Accepted  TLSv1.2 256 bits  AES256-SHA                   
Accepted  TLSv1.2 128 bits  AES128-SHA                   
Preferred TLSv1.1  128 bits ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.1 256 bits  ECDHE-RSA-AES256-SHA          Curve P-256 DHE 256
Accepted  TLSv1.1 256 bits  AES256-SHA                   
Accepted  TLSv1.1 128 bits  AES128-SHA                   

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  *.momoshop.com.tw
Altnames: DNS:*.momoshop.com.tw
Issuer:   Amazon

Not valid before: Jun  3 00:00:00 2019 GMT
Not valid after:  Jul 3 12:00:00 2020 GMT

然後也常常看到網路上的人使用下列的選項
> curl  -ksvo  /dev/null  https://img1.momoshop.com.tw

  • -k, --insecure
  • -s, --silent, Silent or quiet mode. Don't show progress meter or error messages.
  • -v, --verbose
  •  -o, --output <file>

整理一下今天學習到的知識重點

也許可以利用 curl -I 的方式來看 Header 來觀察是否有 CDN, 也許 Header 不一樣

> curl -I  https://media.etmall.com.tw

HTTP/2 403 
server: HiNetCDN/1908
date: Sat, 07 Mar 2020 15:00:16 GMT
content-type: text/html
content-length: 1147
vary: Accept-Encoding
x-cache: MISS, MISS, MISS
x-request-id: 08a83a10d0e14edecab443f4bde4c753

> curl  -I  http://cf.shopee.tw

HTTP/1.1 404 Not Found
Server: NWS_Oversea_AP
Connection: keep-alive
Date: Sat, 07 Mar 2020 15:00:36 GMT
Last-Modified: Sat, 07 Mar 2020 15:00:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 19
X-Content-Type-Options: nosniff
X-Daa-Tunnel: hop_count=2
X-NWS-LOG-UUID: 5423788696303268195 b38e6f5a9afc4fde3c81e984a88d9c0f
Access-Control-Allow-Origin: *
X-CDN: tencent
X-Cache-Lookup: Hit From Upstream

可以藉由觀察 Cache-Control 來觀察是否快取
  • public
    • 可以由任何快取給存取
  • private
    • 快取只給一個使用者使用,且不能被共用的快取伺服器給儲存過。隱私視窗(無痕模式)的快取就可能是這樣子。
  • no-cache
    • 快取伺服器在把已儲存的複製版本傳給請求者之前,先會送一個請求給網頁伺服器做驗證
  • no-store
    • 快取不該存取任何的使用者請求或者伺服器的回覆。每個請求都是送到原始的伺服器去取得資源。

期限的部分一般則是可以看 Cache-Control 的 max-age 來決定
會使用 etag 或是 last-modified 來進行快取內容驗證

再度前進一小步 :)

~ enjoy it


Reference:


a silhouette of a person's head and shoulders, used as a default avatar

#openSUSE Tumbleweed revisión de la semana 10 de 2020

Tumbleweed es una distribución “Rolling Release” de actualización contínua. Aquí puedes estar al tanto de las últimas novedades.

Tumbleweed

openSUSE Tumbleweed es la versión “rolling release” o de actualización continua de la distribución de GNU/Linux openSUSE.

Hagamos un repaso a las novedades que han llegado hasta los repositorios esta semana

El anuncio original lo puedes leer en el blog de Dominique Leuenberger, publicado bajo licencia CC-by-sa, en este enlace:

¡Las máquinas de Tumbleweed van a todo gas! Se han publicado esta semana 6 nuevas snapshots 0227, 0228, 0229, 0301, 0303 y 0304.

Llegaron actualizaciones a los repositorios como:

  • Zypper 1.14.34: ¡Atención! Esta versión ya no admite parámetros abreviados (por ejemplo: zypper install --no-r ya no se aceptará, necesitarás escribir el comando completo --no-recommends)
  • GCC 10 está disponible y ofrece las librerías básica para el sistema
  • KDE Plasma 5.18.2
  • Linux kernel 5.5.6
  • Muchos cambios en varios módulos de YaST
  • gimp 2.10.18

En el futuro podremos ver más actualizaciones como por ejemplo:

  • Python 3.8: que si todos los tests van bien se publicará la semana que viene
  • binutils 2.34
  • Qt 5.15.0 (actualmente se están probando las versiones beta)
  • Ruby 2.7: posiblemente junto con la eliminación de Ruby 2.6
  • GCC 10 como compilador predeterminado
  • GNU Make 4.3
  • RPM

Si quieres estar a la última con software actualizado y probado utiliza openSUSE Tumbleweed la opción rolling release de la distribución de GNU/Linux openSUSE.

Mantente actualizado y ya sabes: Have a lot of fun!!

Enlaces de interés

Geeko_ascii

——————————–

a silhouette of a person's head and shoulders, used as a default avatar

Sesi Berbagi: FLOSS & Creative Commons Dalam Pendidikan & Pekerjaan

Halo semua!!!
 
Kali ini Komunitas openSUSE Indonesia dan Gimpscape ID ingin mengadakan sebuah sharing session nih.
 
Temanya : FOSS dalam dunia pendidikan dan Lisensi Creative Commons dalam dunia professional
 
Kamu pake FOSS di kampus/sekolah tapi gak pede?
 
Kalo pake FOSS ada manfaatnya gak si ?
 
Kamu sering nyomot gambar di Google tanpa tau lisensi?
 
Pengen kerja jadi desainer tapi masih gk paham dengan lisensi?
 
Fix kalo pertanyaan ini pernah kamu tanya ke temen atau diri sendiri. Acara ini buat kamu banget!
Ada beberapa hadiah buat peserta yang beruntung juga loh !
 
Catet acaranya tanggal berapa dan tempatnya yaa!!
 
DILo Solo (https://goo.gl/maps/yvcygz4FZrhfhNGq8)
 
Waktunya nih :
 
14 Maret 2020
09.00 WIB— 12.00 WIB
 
Ingat bahwa acara ini tidak dipungut biaya loh! Kamu tinggal dateng aja bawa jiwa dan raga 😀
 
Misal butuh informasi tambahan bisa hubungi nomer dibawah ya
 
WA : +62 896-8141-4639 (Arif)
Telegram : @Arifd775

the avatar of Vojtěch Zeisek

Course of work with molecular data in R 2020 in České Budějovice

Course of work with molecular data in R 2020 in České Budějovice

R is nowadays probably the most powerful tool for calculations of all kinds. There are plenty of modules available for work with molecular data. Those will be introduced during the course. The course will be taught from October 19th to Friday 23rd (see below). The course will be exclusively on-line, there will be no personal meeting.

vojta Pá, 03/06/2020 - 22:39
the avatar of openSUSE News

openSUSE Summit Dublin Canceled

The openSUSE Summit Dublin has been canceled due to the cancellation of some talks and the cancellation of the in-person SUSECON 2020 in Dublin.

Concerns over the developing situation of COVID-19 coronavirus lead to the decision to cancel the openSUSE Summit Dublin as the venue would have been shared with SUSECON and is no longer available for the summit.

Contact ddemaio (@) opensuse.org if you have any questions concerning the summit.

a silhouette of a person's head and shoulders, used as a default avatar

openSUSE Tumbleweed – Review of the week 2020/10

Dear Tumbleweed users and hackers,

Tumbleweed – full steam ahead! There have been 6 snapshots in the last week, some with quite some changes. The snapshots were 0227, 0228, 0229, 0301, 0303 and 0304.

The changes include:

  • Zypper 1.14.34: beware! This version no longer supports abbreviated command line parameters (e.g zypper install --no-r is no longer accepted, you need to spell --no-recommends out)
  • GCC 10 is available and provides base libraries to the system
  • KDE Plasma 5.18.2
  • Linux kernel 5.5.6
  • Many changes in various YaST modules
  • gimp 2.10.18

The future will bring those changes, sooner or later:

  • Python 3.8: The latest fixes should be there. IF nothing new shows up, this will ship next week
  • binutils 2.34
  • Qt 5.15.0 (currently betas being tested)
  • Ruby 2.7 – possibly paired with the removal of Ruby 2.6
  • GCC 10 as the default compiler
  • Removal of Python 2
  • GNU Make 4.3
  • RPM: change of database format to ndb
a silhouette of a person's head and shoulders, used as a default avatar

Lanzada la gran actualización de marzo de las aplicaciones de KDE

Me complace compartir con vosotros que ha sido lanzada la gran actualización de marzo de las aplicaciones de KDE, tal y como estaba previsto en el calendario de lanzamientos. Es hora de actualizar nuestro sistema, solucionar pequeños errores y mejorar las traducciones. Una demostración más del compromiso constante de la Comunidad KDE con sus usuarios en su proceso de mejora continua.

Lanzada la gran actualización de marzo de las aplicaciones de KDE

El pasado 13 de diciembre de 2019 fue la fecha marcada en su calendario por la Comunidad KDE para lanzar la gran actualización de cara al final de año del conjunto de sus aplicaciones. Al llegar  al tercer mes desde este lanzamiento los desarrolladores de KDE ya han puesto a disposición de los usuarios la gran actualización de marzo de las aplicaciones de KDE

 

Como es habitual en este tipo de actualizaciones, hay pocas mejoras ya que principalmente se han solucionado errores en aplicaciones y, como es habitual, mejorado las traducciones. Si queréis ver todos los cambios os aconsejo leer el «changelog» completo.

No obstante, y siguiendo lo iniciado en la última actualización de KDE aplicaciones, los desarrolladores han creído conveniente resaltar las novedades de KDE Aplicaciones 19.12.3 con un poco más de detalle:

  • Novedades en el gestor de microblogging Choqok.
  • Mejoras en KPMcore y KDE Partition Manager, el gestor de particiones de KDE.
  • Mejoras en el etiqueta de miniaturas en KPhotoAlbum.
  • El editor de etiquetas mp3 Kid3 ha sido movido a kdereview, el primer paso para recibir nuevos lanzamientos.
  • La aplicación Rocket.chat Ruqola está listo para ser lanzado en la próxima gran revisión.
  • Nueva aplicación en la Store de Windows: Elisa.Lanzada la gran actualización de marzo de las aplicaciones de KDE

Así que se trata de una actualización 100% recomendado por que solo puede mejorar tu sistema, sin darte ningún problema. ¿A qué esperas?

Más información: KDE.org

 

a silhouette of a person's head and shoulders, used as a default avatar

Recopilación del boletín de noticias de la Free Software Foundation – marzo de 2020

Boletín de noticias relacionadas con el software libre publicado por la Free Software Foundation.

¡El boletín de noticias de la FSF está aquí!

La Free Software Foundation (FSF) es una organización creada en Octubre de 1985 por Richard Stallman y otros entusiastas del software libre con el propósito de difundir esta filosofía.

La Fundación para el software libre (FSF) se dedica a eliminar las restricciones sobre la copia, redistribución, entendimiento, y modificación de programas de computadoras. Con este objeto, promociona el desarrollo y uso del software libre en todas las áreas de la computación, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU.

Además de tratar de difundir la filosofía del software libre, y de crear licencias que permitan la difusión de obras y conservando los derechos de autorías, también llevan a cabo diversas campañas de concienciación y para proteger derechos de los usuarios frentes a aquellos que quieren poner restricciones abusivas en cuestiones tecnológicas.

Mensualmente publican un boletín (supporter) con noticias relacionadas con el software libre, sus campañas, o eventos. Una forma de difundir los proyectos, para que la gente conozca los hechos, se haga su propia opinión, y tomen partido si creen que la reivindicación es justa!!

Puedes ver todos los números publicados en este enlace: http://www.fsf.org/free-software-supporter/free-software-supporter

Después de muchos años colaborando en la traducción al español del boletín, desde inicios de este año 2020 he decidido tomarme un descanso en esta tarea.

Pero hay detrás un pequeño grupo de personas que siguen haciendo posible la difusión en español del boletín de noticias de la FSF.

¿Te gustaría aportar tu ayuda en la traducción? Lee el siguiente enlace:

Por aquí te traigo un extracto de algunas de las noticias que ha destacado la FSF este mes de marzo de 2020

Próximamente: Un nuevo sitio para colaborar totalmente libre

Del 25 de febrero

Como ya dijimos en un artículo a finales del año pasado destacando nuestro trabajo apoyando el desarrollo del software e infraestructuras, la FSF está planeando en lanzar un sitio de hospedaje de código público y una plataforma de colaboración para lanzarla en 2020.

Las personas que forman el equipo técnico de la FSF están actualmente revisando el software ético basado en una plataforma Web que ayude a los equipos a trabajar en sus proyectos, con funcionalidades como “merge request” , seguimiento de errores y otras herramientas similares.

El nuevo sitio complementaría los actuales servidores de GNU y no GNU Savannah, que continuaría dando apoyo y mejorando, en colaboración con un asombroso equipo de voluntarios.

Lo próximo para el equipo técnico de la FSF es realizar una mayor investigación sobre los sistemas que cumplen nuestros requisitos iniciales, para encontrar las mejores opciones disponibles. Una vez que sepamos en qué estamos interesados, empezaremos a probarlas y realizar unas pruebas más extensas.

¡¡No te pierdas las noticias sobre las opciones de software que escojamos y del anuncio de nuestro propio sitio!!

Noticias de la colaboración entre GNU y la FSF

Del 6 de febrero

La Free Software Foundation y el las cabezas visibles del proyecto GNU están definiendo cómo cooperan estos dos grupos separados. Nuestro deseo mútuo es trabajar juntos como compañeros, mientras minimizamos los cambios en los aspectos prácticos de esta cooperación y así poder avanzar en nuestra misión común del software libre.

Alex Oliva, Henry Poole y John Sullivan (miembros del consejo de la FSF), y Richard Stallman (cabeza del proyecto GNU), han tenido reuniones para desarrollar un marco general que servirá como fundación de una discusión futura sobre áreas específicas de cooperación.

Se han considerado los comentarios recibidos del público en fsf-and-gnu@fsf.org y gnu-and-fsf@gnu.org. Comentarios de la comunidad a sobre este tema que solicitamos hasta el 13 de febrero.

Gracias por apoyas a la FSF

Del 10 de febrero

El 17 de enero cerramos la campaña de recaudación de fondos de fin de año de la FSF, lo que llevó a que llegaran 368 nuevas personas como miembros asociados a la comunidad de la FSF.

Es tu apoyo a la FSF lo que hace nuestro trabajo posible. Tu generosidad tiene un impacto directo en nosotros. No solo mantiene la llama encendida, también es fuente de motivación para luchar a tiempo completo por la libertad del software.

Tu apoyo es la base de nuestro trabajo para promover el uso de licenca “copyleft” o GPL. También ha traido 17 nuevos dispositivos al programa Respect Your Freedom (RYF) este año y dirige nuestra campaña contra la Gestión digital de Restricciones (Digital Restrictions Management o DRM).

Estamos profundamente agradecidos a los nuevos miembros y por las donaciones recibidas este año, por no mencionar a los miembros ya existentes y las donaciones recurrentes que nos han posibilitado llegar hasta este punto.

Let’s Encrypt ha otrogado un billón de certificados

Del 27 de febrero por Josh Aas y Sarah Gran

¡Felicidades a Let’s Encrypt, que ha otorgado su billón de certificados el pasado 27 de febrero de 2020!

Let’s Encrypt es una autoridad de emisión de certificados gratuita, automatizada que tiene como objetivo el beneficio público y que es el que utilizamos aquí en la FSF y en su página de blogs.

Han utilizado este hito como una oportunidad para reflejar qué ha cambiado para ellos y para internet al haber llegado hasta este punto.

apoyo_fsf

Estas son solo algunas de las noticias recogidas este mes, pero hay muchas más muy interesantes!! si quieres leerlas todas (cuando estén traducidas) visita este enlace:

Y todos los números del “supporter” o boletín de noticias de 2020 aquí:

Support freedom

—————————————————————