mercredi 29 octobre 2014

port install error "checksum does not exist" : clean and reinstall



I had an error with the Mac Ports (https://www.macports.org/) on the dbus-glib install while trying to install some other packages. It was just saying that it did not exist in /opt/local/var/macports/distfiles/dbus-glib . It's not clear what broke this package for now, but the way to solve the issue was simple as found here : https://trac.macports.org/ticket/45534


        sudo port clean


and then, reinstall...
        sudo port install


And check, I could upgrade all the other packages and install some other new ones :-)



---
(For "google" parse purpose, here are the errors I was getting)
---
[...]
--->  Found 5 broken port(s), determining rebuild order
--->  Rebuilding in order
     libgnomeui @2.24.5 +x11
     net-snmp @5.7.2
     webkit-gtk @2.0.4 +video
     gimp2 @2.8.6 +help_browser+python27
     xsane @0.998
--->  Computing dependencies for dbus-glib
--->  Verifying checksums for dbus-glib
Error: org.macports.checksum for port dbus-glib returned: dbus-glib-0.102.tar.gz does not exist in /opt/local/var/macports/distfiles/dbus-glib
Please see the log file for port dbus-glib for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_dbus-glib/dbus-glib/main.log
Error: Unable to upgrade port: 1
Error rebuilding libgnomeui
    while executing
"error "Error rebuilding $portname""
    (procedure "revupgrade_scanandrebuild" line 395)
    invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
    (procedure "macports::revupgrade" line 5)
    invoked from within
"macports::revupgrade $opts"
    (procedure "action_revupgrade" line 2)
    invoked from within
"action_revupgrade $action $portlist $opts"
    (procedure "action_target" line 96)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 93)
    invoked from within
"process_cmd $remaining_args"
    invoked from within
"if { [llength $remaining_args] > 0 } {

    # If there are remaining arguments, process those as a command
    set exit_status [process_cmd $remaining..."
    (file "/opt/local/bin/port" line 5254)

jeudi 9 octobre 2014

JavaScript multiline code (JSON description)

It is currently not possible to store a multiline string in javascript. This is annoying since for example storing some JSON data often leads to long data to concatenate or to push into an array.
If you want to avoid this, you can use the following trick, since javascript accepts multiline comments, and returns them to the toString call on a function :

var jsonDescriptionText= function(){/*
[
    {
        "cat": "Categ1",
        "links": [
            {
                "txt": "text1",
                "url": "http://url",
                "title": "mouseover field"
            }
        ]
    }
]*/}.toString().slice(14,-3);
Note 1 : This avoids using concatenation for each line :
var longString2="string part1" + 
"string part2" 
or even escaping the new lines :
var longString2="string part1\
string part2"

Note 2 :

ECMA-262 5th Edition section 7.8.4 and called LineContinuation : "A line terminator character cannot appear in a string literal, except as part of a LineContinuation to produce the empty character sequence. The correct way to cause a line terminator character to be part of the String value of a string literal is to use an escape sequence such as \n or \u000A."

Note 3 :
 "In EcmaScript 6, you'll be able to use backticks for Template Strings, known in the spec as a NoSubstitutionTemplate:
var htmlString = `Say hello to 
multi-line
strings!`;
 "


(seen on : http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript)