This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-12-31
Channels
- # admin-announcements (31)
- # beginners (8)
- # boot (277)
- # cider (9)
- # cljs-dev (15)
- # cljsrn (2)
- # clojars (22)
- # clojure (132)
- # clojure-russia (65)
- # clojurescript (53)
- # datavis (23)
- # datomic (1)
- # hoplon (9)
- # ldnclj (9)
- # lein-figwheel (1)
- # leiningen (2)
- # off-topic (3)
- # om (72)
- # proton (1)
- # quil (2)
- # re-frame (23)
- # reagent (33)
- # ring-swagger (2)
- # yada (5)
MS really made a mess of things with its intentional unix incompatibilities. All that has changed now and Windows 10 fixes many, but not all, the issues. Only I figure that over time the number of ads will increase to the point where you must pay to turn them off.
The prefix concept is used to handle root directories on UNIX platforms, and drive specifiers, root directories and UNC pathnames on Microsoft Windows platforms, as follows: For UNIX platforms, the prefix of an absolute pathname is always "/". Relative pathnames have no prefix. The abstract pathname denoting the root directory has the prefix "/" and an empty name sequence. For Microsoft Windows platforms, the prefix of a pathname that contains a drive specifier consists of the drive letter followed by ":" and possibly followed by "\\" if the pathname is absolute. The prefix of a UNC pathname is "\\\\"; the hostname and the share name are the first two names in the name sequence. A relative pathname that does not specify a drive has no prefix.
i think that windows exception "can't move file to another device" or whatever, i think that's actually being thrown when the .createLink()
method is being called
yup! Typically, a file system requires that all links (directory entries) for a file be on the same file system. Furthermore, on some platforms, the Java virtual machine may require to be started with implementation specific privileges to create hard links or to create links to directories.
But them's hard links. How about soft links? http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/
api for symbolic links: https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createSymbolicLink(java.nio.file.Path,%20java.nio.file.Path,%20java.nio.file.attribute.FileAttribute...)
ok. I was wondering about this: The target parameter is the target of the link. It may be an absolute or relative path and may not exist. When the target is a relative path then file system operations on the resulting link are relative to the path of the link.
As for deletion, you can write a function to test for links and do what you consider right. 😄
But in reading the java api, it looks like delete always just deletes the link if it is one
there's still a race condition there, but i'm using a semaphore to synchronize these operations
if the destination and the source are on different filesystems it says "can't move to different filesystem"
As an old java/windows user I generally just work with strings and avoid links. Its strings in the config file anyway.
I've seen too many operators with only a hs ed. And in the old days most devs only had 6 mo of trade school!
And I found your comment (defc page-width) (.on (js/jQuery js/window) "resize" #(reset! page-width (.width (js/jQuery js/window)))) (defc= dynamic-rules (cond (<= page-width 800) {:background-color "red" :border "4px black"}))) (div :css (cell= (merge {:height "400px"} dynamic-rules)))
As a non-js dev, I see a ton of value in hoplon, but a terrible lac of readable docs!
I mean, all the capability is there, @micha but it is not intended for folk like me.
Ah, I just found this HN thread: https://news.ycombinator.com/item?id=9671106 might be worth posting it somewhere i dont know
nice link. and yes, boot is getting there. But there is a huge market for haplon that can not yet be addressed.
@escherize: whoa
@escherize I really liked that link too!
I plan to ask a lot of dumb questions here. And one thing I know is that you need a sample audience.
I also want to teach my wife, who knows html and css but is not a programmer. I figure hoplon would get her coding without her knowing it. 😄
like when a html file is loaded in the browser it's parsed and lexed, then it's built into an AST, and evaluated to produce the DOM
yes, thank god! I am hopeful that one day I can create nice web pages. Though my wife will need to provide the visuals. 😄
Actually my gf knows html/css as well. Been slogging through learning parinfer with her.
I built my company's frontend on re-frame, never really gave hoplon a look, though i did like the Javelin concept.
@escherize There's still, I suspect, some work needed before we see commercial apps in production.
But mostly there is this lack of docs for the less technically inclined, or for those who just are not web devs.
I find everything is hoplon very easy and friendly, especially after talking with @micha
The nyc lisp clubs spend $1,400 on a joint cristmas party paid entirely by commercial sponsors!
would you believe I've been using clojure for 2 years and never even noticed
:source-paths ["src"]
:resource-paths ["assets" "out"]
in a project.clj?get ready for more: https://github.com/technomancy/leiningen/blob/master/sample.project.clj
@laforge49: 🍪 for everyone!!!
@flyboarder I find it funny that there is much talk about hoplon being an alternative reactive framework. But I looked at demos today and except for one commercial project, I couldn't find any demos that would resize for mobile/tablet/desktop. Seems like a huge hole!
Making this easy for mere mortals would be a huge selling point. Easy enough, I am sure. But then where are the demos? (I know. hoplon is so wonderful that everyone is too busy using it!)
And yes. I am being selfish. I want working examples that i can crib into my code. 😄
An interesting set of demos is a first, non-trivial, step. Once you have that, writing docs will still be very hard, but will be a bit more manageable.
we used http://trigger.io to wrap the hoplon app in a native app container
I figure demos should be largely designed for demos, and for tablets etc you just add things.
http://trigger.io sounds cool. But all this is really way out of my field!
yeah i haven't checked in on http://trigger.io lately
Note to self: Boot will not work on a Windows 10 VM inside Parallels hosted on a Mac if you have Home folder sharing enabled...
(because it cannot correctly create the hard links that it wants)
@micha: How does Boot decide whether it has completed its first run?
I installed Boot.exe on Windows 10 on a VM, mistakenly had Home folder sharing on, and Boot failed (see above). Fair enough I though, just disable Home folder sharing and reboot.
Now Boot won’t run — I’m getting
java.io.IOException: The network name cannot be found
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1879)
at Boot.download(Boot.java:168)
at Boot.install(Boot.java:224)
at Boot.main(Boot.java:250)
https://github.com/boot-clj/boot-bin/blob/master/src/Boot.java#L168 — failing line
So I guess it’s finding a network name from some cached location… but I’m not sure where?
Ah, I’m guessing it’s something to do with environment variables pointing Boot to the wrong place… will do some digging and report back…
Hmm, I might have to try to build boot-bin from source on that VM to add some debugging to figure out what it doesn't like
@laforge49: regarding examples, have you ever looked through the code for the old hoplon site?
@micha: https://clojars.org/tcrawley/boot-verify & https://github.com/tobias/boot-verify
current output looks like: http://p.tcrawley.org/i/2c318.png
FYI, I'm reaching out to Jean Niklas about lifting the Leiningen new/template code to turn into a Boot task, to make sure they're cool with me creating a boot new
task that can pull templates from Clojars etc and render new projects.
Specifically to be able to render Leiningen templates as well as similar Boot templates...
I was reading over the lein new/template code and was surprised how small it all is... Powerful for something so simple
added a couple of code analyzers drafts kibit
and yagni
to https://github.com/tolitius/boot-check
logically eastwood
and bikeshed
are next.
note: keep in mind most of code analyzers don't support reader conditionals yet
Jean Niklas says they'd be very happy for us to go ahead with a boot new
style task based on the Leiningen code! So I'll go ahead and take a run at that.
why would he object?
(it would be awesome btw, thanks in advance)
@seancorfield: I'm not that familiar with lein templates - can it only create whole projects, or can it as well emulate something like Rails generators, when you can define code that will generate some part of the project. Having an option to do something like boot new some-framework-template generate component User
would be awesome.
@jaen: i think maybe generators or scaffolding belongs in a dependency package that exports a new
task of its own, like this:
oh i get it re: coordinating with lein, possible "namespace" interference
lein new some-template
just creates a new folder tree from a template but we can do a bit better because boot new -t some/framework
can generate based on a template but boot new -g component=User
can generate a component (`User`) based on the current project.
And I'm unsure about extensibility - if I understand correctly --component
would be a keyword option on some task, right? Then how could this be extensible with new types of generators?
So the template project can include a dependency that boot new
knows how to use to generate new pieces of code.
@alandipert: It was more a case of "Would the Leiningen folks feel aggrieved if Boot could generate projects from lein-template
templates that already exist — which I think is an important use case to get us off the ground.
@seancorfield: gotcha, yeah i'm tracking, and i agree
Since if both Leiningen and Boot can use lein-tempate
projects, then template authors have more of an incentive to just add build.boot
(and maybe boot.properties
) to an existing template and we get Boot support out of the box.
@jaen: Well, we can discuss how best to have both templates and generators… @micha
Yeah, I guess that's a bit of a problem - Rails generators are great in how uniform they are
i wonder about resolving against github instaed of maven
for templates only
Feel free to add issues and comments here https://github.com/seancorfield/boot-new
we can own the transitive dep info convention
(that’s just a brand new repo where I’ll write the task etc)
If some convention could be figured out that would let those generative tasks be uniform
also presumably a template will never depend on another template
@alandipert: I like the github for templates idea.
It might be a huge boon to anyone who would want to make a CoCy web framework in Clojure
I plan to add Boot support into two Leiningen templates I maintain, so having boot new -t some/template
be able to use Leiningen templates will be useful for me at least
cool, yeah maybe the github thing we do later. i'm attracted to it because i never want old versions of templates
But a common, extensible way for templating projects in whole or in part would be a huge boon.
maybe it needn't be
Any git repo on the other hand (so I can use, say, gitlab) - sounds good and lowers the barrier to creating new templates.
Oh, and my Windows 10 weirdness from yesterday is due to Java thinking my user.home
folder is still the \\Mac\Home
network folder that it was when Parallels was still sharing my host home folder… 😞
Another example is git, where you have main git
command and then subcommands that have their own, different options tailored to the semantics of a command. There's even an example in tools.cli
how something like that could be implemented.
I'm not sure how boot's CLI parser is done and it's certainly geared more towards understanding a pipeline composition rather than subcommands, but if generators are to be useful (and used) they need to be ergonomic and I'm just wondering if there could be a way to simplify the CLI syntax for that case. Also the fact that boot -d some/framework generate --component User
would be hardly extensible (you can't add options to an already existing tasks if I understand correctly) also seems problematic in terms of composability of those generators. Maybe they could warrant their own syntactic case and/or macro? I don't know.
"Also the fact that boot -d some/framework generate --component User
would be hardly extensible " — thats why I suggested boot new -g component=User
since it could use something in the project itself as the generator...
This sounds sensible. I imagine keeping generators as tasks would be a good idea in that you could easily compose them up to building a whole-application template from a composition of generators, but having a script that supports calling them outside of the rigid boot CLI structure would be helpful.
@seancorfield: ah, right, sorry - didn't pick up on that.
So boot new -t template
would generate a project (`build.boot` etc) and then boot new -g
could make use of something the project provides. Well, the project template could also provide its own generate
task in the build.boot
file so generate
would be based on the project itself. We’ll have to discuss what is the best approach.
Oh the horror… So Java uses entries in the registry to figure out your home directory on Windows apparently and Parallels had \\Mac\Home\Desktop
etc in the registry even after I deactivated sharing 😞 https://clojurians.slack.com/archives/boot/p1451583324007718
Anyways, a quick bit of regedit
and Boot is back up and running on my Windows 10 VM now.
@seancorfield: maybe a note on the wiki?
Is there a good page for Windows stuff?