Giter Site home page Giter Site logo

compilify's People

Contributors

fekberg avatar jrusbatch avatar khalidabuhakmeh avatar nberardi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

compilify's Issues

Replace MongoDB with RavenDB

RavenDB offers a cleaner API and indexing features that can be implemented with little additional work. Due to the significance of the changes being made to the data model in order to accomodate other new features, this is a good time to switch.

Allow concurrent editing of code.

Users should be able to edit code simultaneous and see each other's updates (and the effects of their changes) in real time (or as close as possible).

Booksleeve MessageQueue Closed

This exception began occurring on one of the web server instances. Deploying 51ea03c stopped the exceptions, but it's hard to tell if they stopped because of the deployment or because of the fix. Unfortunately, I did not subscribe to the UnhandledTaskException event on the TaskScheduler, so I have no further information.

Exceptions

[InvalidOperationException: The queue is closed]
at BookSleeve.MessageQueue.Enqueue(RedisMessage item, Boolean highPri) in C:\Dev\BookSleeve\BookSleeve\MessageQueue.cs:line 71
at BookSleeve.RedisConnectionBase.EnqueueMessage(RedisMessage message, Boolean queueJump) in C:\Dev\BookSleeve\BookSleeve\RedisConnectionBase.cs:line 872
at BookSleeve.RedisConnectionBase.ExecuteInt64(RedisMessage message, Boolean queueJump) in C:\Dev\BookSleeve\BookSleeve\RedisConnectionBase.cs:line 788
at BookSleeve.RedisConnection.BookSleeve.IListCommands.AddLast(Int32 db, String key, Byte[] value, Boolean createIfMissing, Boolean queueJump) in C:\Dev\BookSleeve\BookSleeve\IListCommands.cs:line 453
at Compilify.Web.EndPoints.ExecuteEndPoint.OnReceivedAsync(String connectionId, String data) in d:\temp\nekv5d4u.co4\input\Web\EndPoints\ExecuteEndPoint.cs:line 30
at SignalR.PersistentConnection.<>c__DisplayClass4.b__2(String data)
at SignalR.Transports.ForeverTransport.ProcessSendRequest()
at SignalR.Transports.ForeverTransport.ProcessRequest(IReceivingConnection connection)
at SignalR.PersistentConnection.ProcessRequestAsync(HostContext context)
at SignalR.Hosting.AspNet.AspNetHost.ProcessRequestAsync(HttpContextBase context)
at SignalR.Hosting.AspNet.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Provide an interface for a user to describe their post.

Include a title, description, and tags (searchable) for the post. The model already has these fields, they just need to be displayed to the user.

In addition, users should also be able to mark a post as private. Private posts won't be searchable.

Throttle requests and ignore insignificant code changes.

Ajax requests should not be sent for code changes that can't possibly result in a change of build result (whitespace additions/deletions, etc). Ajax requests should also not be sent until there is a pause in the user's typing.

Better examples

The Fibonacci sequence, FizzBuzz example, etc. Provide an examples page/section.

Provide more details about any validation or execution errors the user may receive.

The user should get as much detail as possible about any errors in their code. It would be great if this information could be presented in the editor itself, as unobtrusively as possible. For example, some possible ways to handle this include:

  • Apply a subtle visual indicator to the code that is responsible for the error(s) in the editor. When the user mouses over the highlighted portion display a tool tip containing the information. With this approach, we may be able to remove the error list entirely.
  • When an error is moused over in the error list, apply a subtle visual indicator to the portion of the user's code that it is referencing.
  • Or, the simplest approach, display the line and column numbers for each error.

Add search capability

Allow users to search for snippets. Potential search keywords could include:

  • User-defined tags
  • Symbols referenced from external libraries

There should also be a flag to allow users to let users prevent their posts from being included in search results. Posts that were submitted before the search functionality is implemented should be excluded from the results by default.

Allow users to define their own classes and methods.

Users should be able to define their own classes and methods against which they can execute code. So far I've had two ideas about how to implement this:

  • Create a separate class-level editor that would be referenced by the current method-level editor.
  • Do something similar to how SSMS works. Define classes and executable statements in a single editor. When the user clicks "run", any highlighted portions of code will be executed. If nothing is highlighted, all of their code would be executed. This would be complicated, but cool.

Update to Roslyn CTP v2

Aside from the API changes, it also appears as though the structure of the code generated in a compilation has changed.

Donate button

This project blows my mind. I would love to see it evolved, and would like to help you out by donating/buying you a beer.

Execute code in a secure sandbox.

Users should not be able to cause any disruption to the experiences of other users of Compilify, or perform any malicious actions targeting either Compilify or other web sites and services.

Also, a disclaimer should be added that absolves Compilify of any damages caused by code written by the user.

Suggestions for snippet examples.

The site needs good example snippets to demonstrate its capabilities to new users. If you wrote a cool snippet, post a link to it here! Bonus points if it's documented!

Limit the number of bytes returned by the worker.

Issuing statements like `new string[1000000];' and printing all of the numbers between 1 and 1000000 cause a huge delay while Json.NET serializes the results to JSON.

If the resulting object is too large to be published to the Redis channel, a friendly "resulting object is too large" message should be sent instead.

Being able to run a Gist

Probably via Chrome/ Firefox/ Safari extension or just with a javascript bookmarket. An example of this implementation: http://bl.ocks.org/

This would allow users to run many of the already written C# gists.

Restyle the user interface

A prototype of the new design:

The new interface

Benefits of the new design that will be realized immediately include a tabbed interface with the ability to add, remove, and rename "documents", and a sidebar that includes an area to manage the project's references.

Some things that have changed or will change from the screenshot include:

  • Executable code (represented by the "execute" textarea in the current design and the textarea on the right in the above screenshot) will be replaced with a special tab that cannot be renamed or closed.
  • The execution results will span the bottom of the document area. The user will be able to adjust the height to their preference, or hide it entirely until the next execution.
  • Double-clicking on a document's tab will pop-up the dialog box to rename it.

Tests.

There are none. maybe there should be some - especially around the code executor.

Investigate SignalR performance issues.

The site experienced an extremely large number of requests from individual users. Logs indicated that some clients were hitting the SignalR endpoint up to 30 times per second. This resulted in intermittent 503 errors throughout the day as we overloaded AppHarbor's load balancer.

Add references

Uploading dll that the code will use might cause a major security issue.
But it will be nice if we can select popular library to compile with our code.
For example

  • nUnit
  • Ninject
  • AutoMapper
  • EntityFramwork
  • ...

Isn't Your Base32Encoder a Base36Encoder?

I think you Base32Encoder is actually a Base36Encoder. Because you have the 26 characters of the alphabet plus the 10 numbers.

Base2 = 0 ... 1
Base8 = 0 ... 7
Base16 = 0 ... 9 A ... F
Base64 = 0 ... 9 A ... Z a ... z and equal (=) and slash (/)

Yours only goes

0 ... 9 a ... z

I know it doesn't really matter, just though I would point this out.

Add keybinds.

Add intuitive key binds to the editor. Ctrl+S should save, Ctrl+B or F5 should build. Stuff any average .NET developer would know, regardless of their tooling.

Enable keep-alive for connections to Redis

Booksleeve's API exposes a SetKeepAlive method that, once called, pings the Redis server at a set interval. Calling this would, at minimum, alleviate the slight delay that occurs when a user attempts to execute code after a period of inactivity on the site, and potentially improve the reliability of the connections.

Get a logo.

The project uses the default favicon that is used for new MVC4 projects in Visual Studio. We need something fresh!

Require SSL

Users should be redirected to use the HTTPS protocol if they attempt to access any resource without it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.