Hacker Newsnew | past | comments | ask | show | jobs | submit | pgtan's commentslogin

Here are two checks using joins, one with sqlite, one with the join builtin of ksh93:

  check_empty_vhosts () {
    # Check which vhost adapter doesn't have any VTD mapped
    start_sqlite
    tosql "SELECT l.vios_name,l.vadapter_name FROM vios_vadapter AS l
        LEFT OUTER JOIN vios_wwn_disk_vadapter_vtd AS r
    USING (vadapter_name,vios_name)
    WHERE r.vadapter_name IS NULL AND
      r.vios_name IS NULL AND
   l.vadapter_name LIKE 'vhost%';"
    endsql
    getsql
    stop_sqlite
  }

  check_empty_vhosts_sh () {
    # same as above, but on the shell
    join  -v 1  -t , -1 1 -2 1 \
   <(while IFS=, read vio host slot; do 
  if [[ $host == vhost* ]]; then
      print ${vio}_$host,$slot 
  fi
     done < $VIO_ADAPTER_SLOT | sort -t , -k 1)\
   <(while IFS=, read vio vhost vtd disk; do
  if [[ $vhost == vhost* ]]; then        
    print ${vio}_$vhost
  fi
     done < $VIO_VHOST_VTD_DISK | sort -t , -k 1)
  }



METAFONT in particular does not have a way to write code to produce different random variations for the same glyph, nor does its output format have a way to encode those multiple alternatives in its output. I'm not sure if PostScript Type 1 fonts do either, but I'm less familiar with them.


Actually pdftex or luatex, but you are completely right, it can load a pdf file and do a lot of things with it.


socialism's new excuse to grab other people's money


Does someone have stock portfolio of superconductor manufacturer to share? I watch Furukawa, Sumitomo, and AMSC and they are performing not bad.


That article not even mention Bauhaus in Tel Aviv!

https://bauhaus-center.com/bauhaus-in-tel-aviv/


Well, POWER9 and later CPUs have builtin hardware compression using the 8-4-2 algorithm.

https://en.wikipedia.org/wiki/842_(compression_algorithm)

https://github.com/plauth/lib842


This bash code is a parade example how NOT to write scripts.


What would you change about it ? I'd be happy to learn how to write better code.


OK, for starter the while loop. Main rule of writing shell scripts is, Use The Shell, Luke. Don't start external programs, if your shell (which is already running) can do it. "while /usr/bin/true" is nonsense, every time an external program gets executed for nothing. There are plenty of bash (since this shell is used in the example) internals, which evaluate to true, like ":", "test 1", "(( 1 ))", maybe others too. So "while :" should be better. But why even use dummy true statement, since the loop terminates with read? You can put the read as argument to while directly: "while read -r line; do" ... Same with echo and date. Just use one single printf builtin.

while read -r line ; do printf '%(%FT%T%z)T %-9s %s' -1 "$(/usr/bin/id --user --name --real)" "$line" ; done


Thanks for the pointer about the useless use of true.

Using builtins may be a security risk as they can be overloaded (hence the use of full paths everywhere).

I did not know about bash's extension of printf to print a date. I need to use the builtin to use it though. But I've received good advice elsewhere on how to do that securely, so I'll do it and do a write-up because it's not information that's easy to come by.

Your advice is very helpful, thank you.


Bash and zsh both allow:

  function /usr/bin/cat { echo hello; }; 
  /usr/bin/cat
  hello
So specifying a path isn't as useful as it seems



Well, Kornshell (ksh93) has some nice programming features, much better than bash.


Yuliya Zdanovska, here in an old team picture:

https://euromaidanpress.com/2017/04/13/ukrainian-schoolgirls...


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: