juan_gandhi: (Default)
[personal profile] juan_gandhi
Выходные как-то организованно прошли. У меня т.к. agile теперь дома стоит, тикеты на стенку наклеены, то, например, вчерась успел почапать на тренажере, починить калитку, купить грунт для грядки, посеять укроп, кинзу и ореган, повесить на стенку новый контроллер к поливалкам, посадить под магнолией порядочного размера кактус (в двойных перчатках работал), пропылесосить всё дома нахрен, послать ченджлист в IRS, в смысле, налоги пофиксить за 2008й год (т.к. вдруг обнаружил, что переплатил штуку), съездить в магазин купить чёрного хлеба и вафель, сварить щи, написать парсер-комбинатор для выдёргивания диаграмм из документации по xydiagram, посмотреть фильм и почти познать суть вещей. Это была суббота. О, и ещё машину съездил помыл. В связи с предстоящим дождиком зазиповал её на ночь в гараж.

А в воскресенье пошел дождик, и я что-то завалялся, а потом сидел весь день выкидывал парсер-комбинатор, писал свой парсерок (ну это фигня), вставлял примеры диаграмм в пришив, исправлял примеры (далеко не все идут, надо будет разбираться), а потом, к девяти, поехал на работу, т.к. у нас ночной релиз. Это что-то вроде парти, конечно. Народу порядочно собралось. Я-то и не нужен, скорее всего, так что занимаюсь хозяйством - ускорил вот тесты (в смысле, ещё в пятницу солюшен нашел, в три раза быстрее тикают), теперь коммитить буду; да ещё гугловскую библиотеку гуаву наконец скачал и закоммитил, теперь буду пользоваться, а там, глядишь, и другие подтянутся. Ханлонг так с удовольствием, он давно уже в курсе, да лень было возиться.

Date: 2011-01-31 04:48 am (UTC)
From: [identity profile] xyzs.livejournal.com
плодотворно, особнно в субботу - ну так все понятно:) тоже люблю работать по выходным, немного есть в щтой тайны какой то:)

Date: 2011-01-31 04:49 am (UTC)
From: [identity profile] xyzs.livejournal.com
вроде все плюшки жуют, а мы сплотившись как обычно неустанно и самозабвенно и что главное от души с адриналином..не всем понять..:)обожаю раж работы
Edited Date: 2011-01-31 04:50 am (UTC)

Date: 2011-01-31 04:55 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну мы же типа всем должны, верно?

Date: 2011-01-31 05:02 am (UTC)
From: [identity profile] xyzs.livejournal.com
не не из за этого - работу люблю:)
Edited Date: 2011-01-31 05:07 am (UTC)

Date: 2011-01-31 05:06 am (UTC)
From: [identity profile] xyzs.livejournal.com
первый был сарказм, второй - "обожаю раж работы" - нет

Date: 2011-01-31 08:10 am (UTC)
From: [identity profile] vit-r.livejournal.com
Хорошо, когда дети взрослые и далеко

Date: 2011-01-31 08:19 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Первое хорошо, а второе не сказал бы.

Date: 2011-01-31 08:22 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
«сварить щи, написать парсер-комбинатор»

Отлить в граните, я щетаю.

Date: 2011-01-31 09:38 am (UTC)
From: [identity profile] simple-fox.livejournal.com
Вы - молодец. И спасибо большое за отчет, мне всегда было интересно, как устроено расписание у хайтечников не в России.

Date: 2011-01-31 11:35 am (UTC)
From: [identity profile] dvig-al.livejournal.com
Уважения заслуживают конечно же Щи. А парсер скальный?

Date: 2011-01-31 12:19 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да всё на скале, конечно.

Date: 2011-02-20 03:12 pm (UTC)
From: [identity profile] dvig-al.livejournal.com
Не поздно а своевременно. На код парсера можно взглянуть или ни-ни?

Date: 2011-02-20 05:03 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
О, да что там смотреть, фигня полная, адхок.
package org.presheaf

import java.io.{InputStream, FileInputStream}

object xydocscan {
  def bytes(is: InputStream) : Iterator[Byte] = new Iterator[Byte] {
    def hasNext = is.available > 0
    def next = is.read.toByte
  }

  def isText(b: Byte) = b == 0x0a || b == 0x0d || b >= 32 && b < 0xff

  def chars(is: InputStream) = bytes(is) filter isText map (_.toChar)

  import org.presheaf.DiagramSamples
  
  def main(args: Array[String]) {
    val scanner = new XyScanner(chars(new FileInputStream(args(0))))
    for (diagram <- scanner) {
      if (!diagram.isEmpty) println(diagram + "\n")
    }
  }

  class XyScanner(val input: Iterator[Char]) extends Iterator[String] {
    def matches(input: Iterator[Char], what: String): Boolean = {
      for (c <- what) {
        if (!(input.hasNext && c == input.next)) return false
      }
      true
    }

    // kind of cheap, won't find 'maman' in 'mamaman'
    def find(input: Iterator[Char], what: String) {
      while (input.hasNext) {
        if(matches(input, what)) {
          return
        }
      }
    }

    def hasNext = {
      input.hasNext
    }

    private[this] val sb = new StringBuilder

    def next = {
      find(input, "\\xymatrix{")
      if (!hasNext) {
        ""
      } else {
        sb.clear
        var level = 1
        while (input.hasNext && level > 0) {
          val c = input.next
          sb append c
          c match {
            case '{' => level = level + 1
            case '}' => level = level - 1
            case _   =>
          }
        }
        sb.dropRight(1).mkString("")
      }
    }
  }
}
Edited Date: 2011-02-20 05:03 pm (UTC)

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

September 2025

S M T W T F S
 1 2345 6
78 9 10 111213
14 151617 181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2025 09:31 pm
Powered by Dreamwidth Studios