Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I've seen many people trying to use FOSUserBundle.
I've been struggling with it for 6 hours now. Just to be able to make a custom user registration form.
The basic documentation is 6 pages long: basic.
Here are all the drawbacks of using FOSUserBundle, from my point of view:
you have to copy paste their views to make inheritance possible
they have their own table on the database: fos_user. So you have to base all your code on your user entity, which a child of BaseUser. If your database follows a convention (like wordpress does, with all tables beginning with wp_) this breaks your convention.
you have to hack all you own views with things like "if the fos_user_content block is empty i suppose there's nothing to display, otherwise i have to re-organize my whole view to display the fos_user_content block (registration, modify user profile and so on)"
and now I see that if you need two different registration forms (for example, one for client, one for partners) it's not possible unless you hack. See here.
So I'm just wondering: what is the point of using if FOSUserBundle?
If I've already done a registration process that follows the very basic things explained in Symfony help (forms, form validation, and sessions) and I just copy paste my code, this is, from my point of view, far faster than installing, configuring, inheriting, modifying and so on the FOSUserBundle.
Knowing what I've done, what are the advantages of FOSUserBundle? What could make me change and take some more hours to make it work with my project, instead of re-using my (forms, form validation, and sessions) from another project?
Well, your question sounds more like a rant, but you got some points.
In my opinion, the main problem of the FOSUserBundle as well as a lot of Bundle in the community, is that they try to make it customizable, generic, re-usable, whatever.
The goal is fair, but in reality it often leads to not human friendly code. Most of the time, you will take much more time to "get it done" using community bundle than making your own (see Sonata bundles).
I don't say they are bad bundles, not at all, but they deserve different purposes.
For me such bundles may help newcomers to have a quick implementation, to get things done, and in the case of a Rapid Application Development, it may be really easy to get a fully working application with all the registration process done.
But most of the time, you realize that using third party codes ties you too much to their own concept and that is wrong.
In comparison, I do like very much the npm community, there are A LOT of little package with one function which you can easily integrate, in the same way, I try, to favor library instead of bundle when I want to release an open source project. The point is the framework implementation is free of any concept or philosophy and easily integrate in an existing project.
I remember some early days where I had to play with Joomla, Drupal, Wordpress, whatever, it was the "plugin/extension/module" fashion, in the same way that we often hear "there is a bundle for that", some people, or company just want to get it done, no matter the quality, the future of the application because it already have been sold.
To conclude, such bundles can greatly help and speed up development process, but be careful, if you have custom requirements, performance implication, etc. don't use them, however if you only want to a quick proof of concept, or a simple application, it is worth.
This is a fiction story based on my own experience and failures using it :)
I know this is an old post but as search engines keep indexing this...
FYI FOSUserBundle has been discontinued and is of no use in Symfony 4 and 5...
Sources
No Longer Maintained Message On Documentation #2874
Is this project maintained? #2996
Comment with alternatives by Caedendi on 10 Jan 2020
Related
Is there any (smooth) possibility for multiple users to collaborate on a Twine project?
I've just been introduced to twinery.org, and thinking about the possibilities of using it to teach programming in basic school. My colleagues and I thought it would be an interesting project for pupils to collaborate on a story, making perhaps one passage each.
Can we do this in a smoother way than asking them to send their code to a teacher who adds it together and publishes?
Anyone with experience of this, or thoughts of how I can go about?
2 users will never be able to work on the same story cause of the pid field inside the HTML file. users would need to alternate before grabbing the latest changes. I withdraw my answer.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
For a big single page web application using ASP.net, MVC5 and Angular JS I'm looking to serve dynamic generated stylesheets. The application will have an big amount of users (> 1000s) that individually can set about 10 variables. These include a few colors and logos. These colors and logos will be used in the less stylesheet to generate lots of classes/styles. The stylesheet is compiled from a lot of files, about 50 .less files.
I'm planning to use the following approach:
On loading index.html, after user login, I call an ASP action to load the stylesheet <link href="Give/Me/My/Dynamic/Stylesheet/For/User/12122312">
The controller action will do its magic and gets the 10 user variables from the database
The server will than use .dotless to compile the less to css
Server returns string
This approach will work, but I'm afraid the performance will be not so good. My questions:
Is dotless the fastest way to compile less?
How long will the databasecall + compiling take?
Is this the way other application do this?
I'm looking if there's a way to cache the css request - maybe check if there has been a change since the last time the css was compiled.
What will not work:
Compile the less to css and then change the variables in the css (saves a compile every time). Some of the colors in the stylesheet will be based upon on of the variables. (eg lighten(#333, 0.3) etc).
Use a static stylesheet and then override these in the head of the HTML doc. There will be a whole lotta custom styles involved!
Some other thoughts:
This solution seems to do the same, but compiles on build:
This solution saves the variables to a static file and uses that for compiling. This saves a database call, but the directory gets crowded with lots of users.
Your planned approach sounds fine. As far as your specific questions go:
Is dotless the fastest way to compile less?
"Fastest" is relative and debatable. The only way to know would be to run this and any available alternatives on your production machine using some sort of benchmarking. Even then, outside factors such as how much load the server is getting, how many requests are being handled simultaneously, etc. can affect those benchmarks. For example, maybe one solution is "faster" handling an ideal scenario, but has a large overhead that causes it to run much slower than another solution when the server is actually being taxed. Overall, it's impossible for anyone to give you any sort of definite answer to this, and really, it's probably too early to even be that concerned about the question. If it becomes a problem in production, then you can start investigating alternatives.
How long will the databasecall + compiling take?
Also completely impossible for anyone to give a definitive answer to. There's way too many variables involved in that relatively simple question. What database are you using? What version? What are the specs of the server it's running on. What else is running on that server? How have you configured the database server? What kind of query are you running? How many tables are involved? What's the size of the resultset being returned? What type of network infrastructure is in place? What's your latency? How capable is your network infrastructure at handling load? There's probably more questions I could ask if I though long enough and that's just about the database call portion. I don't expect answers to those questions; I'm merely trying to point out 1) there's no way anyone can answer that for you and 2) you're going to have to do a lot of research to come up with those answers yourself.
Is this the way other application do this?
This is highly speculative. First, it assumes this is somewhat common, when it's probably anything but. In my 20-some-odd years of doing web development, I've yet to encounter a scenario where I needed a dynamic stylesheet. Granted, for a large part of those years stylesheets didn't even exist or at least weren't heavily used yet and just because I haven't had a need doesn't mean there's not still a perfectly valid business-case for this. I understand the desire to want to find an accepted pattern or best practice to follow, but the sample set here is probably so small that no such thing exists. Trust your gut. Build things in a way that makes sense. Then test, refine and refactor. That's really the best advice I can give you.
I'm looking if there's a way to cache the css request - maybe check if there has been a change since the last time the css was compiled.
This one is pretty easy. Just make sure to set the appropriate response headers before returning your response. Expires is really your go-to here. If the stylesheet virtually never changes for the user, then you can set a far future Expires header and the client's browser should cache it requiring all this infrastructure to not have to do its thing again for a while. If the change-ability is variable (any time the user updates a setting, they need a new version, and this can happen at a whim), then you can still use a far-future Expires header and employ a cache-busting querystring param that will force the browser to get a fresh copy. A good choice might be adding the last modified date for the settings when rendering the link for the stylesheet. If the user hasn't modified anything, then the date won't change and the original cached version will be used. But if the date has changed, it will look like a new URL to the browser, and it will be fetched fresh.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Sharepoint's lists functionality is powerful. Because I don't want all the other functionality of Sharepoint, I have been looking for an alternative (preferrable open source) without much success.
Basically I want to have a platform or web application that:
allows us to define custom datatypes (for different kinds of customer products)
has the possibility to create views or forms to present to the user for reading, creating or updating the information of the items of a given datatype
a ui to setup this configuration is not required but would be nice to have
In an ideal scenario there is an API to get the data out afterwards for further processing.
I have heard of Alfresco (but have not used it) which is a free open source content management system.
To address each of your mentioned needed features:
1. It has the ability to add custom content types via XML (http://wiki.alfresco.com/wiki/Step-By-Step:_Creating_A_Custom_Model).
2. I didn't see a lot of support of individual views but generic views can be setup when creating your model
3. Alfresco has provided installation guides for various installation configurations. They require a login to download the guides (http://www.alfresco.com/products/docs/)
4. REST support.
List of Features from 10K view.
I would check out all of the features before validating it fits your needs. (http://www.alfresco.com/products/dm/features/)
I share your quest for an open source alternative to sharepoint list functionality. What I like/need about sharepoint is :
Can import from existing Excel files (removes alot of fear from a customer viewpoint, lots of legacy Excel files out there)
Can export to Excel format (idem on the fear thing, some customers just need their Excel fix)
Provides out of the box sorting/filtering
good pre-defined datatypes and easy to define custom datatypes
Makes it easy to define different views and display styles (customers love the preview pane)
Lists/views can be inserted easily into other webpages/wikipages
I know that jqgrid and http://datatables.net/ gives table/grid editing/sorting/filtering functionality with pre-definedable datatypes but you need to do the backend work ( they give lots of exapmles in PHP).
If I was to define what I'd love to see for internal use in our team it would be :
Content management via wiki, with semi-decent WYSIWYG as default
default table/grid/list management with all of the previously listed features
I'd say that if mediawiki/dokuwiki/phpwiki etc. could repackage with WYSIWYG and list handling then the entire planet would just love them for it.
Best regards / Colm
P.S. The only grief I'd have with Alfresco is the sledgehammer/fly metaphor insofar as it provides far more functionality than I require meaning that the overhead for getting up to speed and then maintaining the installation is prohibitive.
P.P.S I also looking at http://www.tiki.org who claim to have "spreadsheet" functionality built in (jquery based).
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Background
I'm a one man shop (a micro-ISV). A week after putting my product online I get a mail from one of my customers about a bug. It was an obvious fix and I fixed it in 5 minutes but I realize that the reason why the bug was reported so late is because the only contact I have with my users is through mail.
I feel I need something more but I have difficult time finding the right solution.
I was checking out some solutions, but I would like some feedback from the community
Question
What do you use for a micro-ISV (both online and built into software) when you want to give good quality service and support to your clients?
Have an issue-tracking system that your customers can use through a web page. (You do have a web page, right?) Alternately, if your software is interactive, have a menu entry "Submit Bug Report" which will email you what the user says, and perhaps other useful things (users very frequently omit things like software versions, OS versions, that sort of thing). Or both.
Also, your customers are likely to feel happier if they have a standard way to report problems.
If you want to go beyond the "email us" link, you might consider putting up a bulletin-board or even wiki-style forum on your site for your clients to use. Make your own list of Frequently Asked Questions the first post. I'd recommend using an off-the-shelf package, instead of rolling your own. A pre-existing solution should include the spam-filtering and moderation tools that you'll need.
Another idea would be to start a company blog, and invite users to leave feedback.
You fixed it in five minutes? Sounds like you're already giving good quality service / support. But if you really want a tool, I would check out if Unfuddle.com has a public bug report feature. I love that site.
This is a subject I've thought a lot about (since I'm contemplating doing just what you're doing), and there's considerable precedent for how you could proceed.
Set up a feedback page on your website
Set up a dedicated email account for your website
Set up automated opt-in bug reporting and crash reporting for your software
Set up a twitter account; and conduct twitter searches for your software name
Set up a Google Alert to track when a website or user references your product, and respond to them.
Set up a Uservoice account for your software/website (it's free for a 'small' company).
For a start, you can ensure your website is clear, and has useful sections like FAQs and How-Tos.
Make sure your customers can get in touch with you easily, and that you respond to them in a reasonable amount of time.
If you out and don't have a Blackberry enabled phone you could have your software send you an SMS of the fault.
A well designed website with a forum for news, updates, user discussions is probably a good start. It's worth paying someone to do this for you if you want to spend more time designing and coding good software. The more information you can put out there, the less time you'll spend dealing with customer issues.
In addition to giving your users more options on how to report a problem, your site should also be logging a fair amount of information. Such as, who, when, and what they did.
Further, ANY failure should be logged and automatically be reported back to you. Most clients simply won't say there is a problem and will just move on.
Just basic logging will also give you usability information. What pages do they use the most, which ones are used least, what is different about them. Are there features no one cares about?
Finally, engage your customers by asking them what they would like to see. Quite often their vision is different from yours.
I use ontime as a customer portal and help desk / bug tracking tool. It's free for a one person license. Which is great for me since I'm a one man shop as well. I'm the only full-time employee and have one to two part-time 1099 contractors here and there as work comes and goes.
There are also lots of open source out there. However, I've found the ontime to be dead simple, free for a 1 user license and cheap for 5 user license.
Split your time between development and customer support. If you focus too much on support, new functionality will suffer, and if you focus on development, customers will suffer.
So find a balance and plan portion of your time for development and another part to support.
Also keep in mind that solving the bug is just the first step.
You need to test (preferablyseveral configurations)
create a new installation
possible update manual and help files (and don't forget the translations if it's multi lingual).
Add a new version number (every deliverable must be identifyable).
Update website...
So it often takes several days to ship a single bugfix.
Besides, most customers are happy with a few updates per year. And ocasionally an urgent hotfix if the customer is in serious need of a bugfix.
I have a few systems. My main system is through a fogbugz account with buttons built in to my application that create emails for users so that they can then submit comments / bug reports etc. I also run a wiki as the documentation for my application, although I am the main contributor to the wiki and it does take a lot of effort to keep up to date. Again, there is a menu item in my application that takes users directly to the wiki. I have a built in crash reporter using an open source framework, which again submits emails to fogbugz. Finally I do online video and text based tutorials on my applications website, although I'd like to integrate them more into the application.
One (free) product that I know uses Yahoo Groups (and also a Google Group).
It acts as a mailing list: so if you report a bug, that's seen by other users as well as by the group's owner/moderator (i.e. you).
It also acts as a weblog/archive: so users can search it for known issues/answers before they submit a new message.
Have you tried Casengo? Its a free solution (for 1st agent) for handling email, chat and social media . It might be of interest to you. url: http://www.casengo.com
I am using Casengo for several weeks and is very easy to use.
Jeremy
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Visual studio is pretty good but doesn't create stored procedures automatically. Iron Speed designer does supposedly. But is it any good?
I have used Ironspeed extensively for the past two years for most of our ASP.NET forms over data projects.
It works. Does several things well: stored procs, fast layout of table browse and CRUD screens, fast layout of single record CRUD screens. It manages the round-trip (or half-round trip) process decently, detecting changes in your back end db schema and updating its data access layer, then making the changed columns available for you to alter your UI (in record or table control panels). ISD (as they call it) does an excellent job in making security management for your app pretty painless, even down to the control level (if you use ISD's subclassed versions of asp.net controls). Final plus, not a small one, is the CSS-based theme control (easy to change to a variety of themes, easy to customize a particular theme, and not even too bad to build your own theme variant by forking an existing one you like). Depending upon whether you let ISD create your stored procs in the code base or the database, changing DB's at run time can be a piece of cake.
Fairly active forum with a core group of helpful contributors. You can probably avoid the paid tech support through the forum.
Okay, the down sides. Creates fairly large code conglomerations, being a three tiered architecture. As Galwegian says, like any framework, you've got the velvet handcuffs (get your mind out of the gutter if you are thinking about anything other than code limitations and conventions!). The velvet handcuffs are the page and control model, the data layer, lack of a business object/class capability per se, the postback model, and the temptation to make your user GUI look like THEIR user GUI that comes out of the box because it is so darned easy and convenient.
ISD builds a basic page by combining an HTML template (in to which you place ISD specific code generation tags and any other tags, etc., you which using the ISD GUI or by hand). The page model relies upon a code behind page created from a piece of code template. The base classes are almost completely overridable, so that you can override all of the default functions, regenerate the application and not lose your overrides. The database controls live in the page container, but have their own class definitions (i.e., their code-behind) in specific /app_code files. Again, each control type has its own base class with pretty completely overridable methods. A single record control (showing a single db record) is pretty simple. A table, showing several records, has a table class and a table row class. The ISD website (www.ironspeed.com/support) has good documentation of the ISD model as a whole.
So, where are the problems in this model?
1. Easy and tempting to live with their out of the box GUI. Point ISD at your database, pick the tables you want to have it turn in to pages, tell it the kinds of pages, give it a thematic style and five minutes later you're viewing the application. Cool. But, it is very easy to forget that their user GUI is probably not what your user wants to see. So, be prepared to think for yourself and tinker with the GUI thus created. Not hard to do, and you can use VS 2005 to help you.
Business objects. You could put together your own business objects, but it would be difficult and you would get no help from ISD. ISD does a LOT of building of simple validation and checking (appropriate look up values, ranges, lengths, etc.) ISD lets you build custom queries, but these are read-only. It is smart enough (and you can override the write from a page in any case) to let you take a one to many view and write it back to the database (you'd probably override the default base method, but it isn't that hard to do). However, when you get in to serious dependency checking, ISD is still really about tables and not business objects. So, you're going to write some code.
If you are smart, you'll write it once store it in app_code somewhere and use it by calling it from an overridden method in your table or record controls. If you are like most of us, you'll first spaghetti it in to one of the code-behind classes above, and then forget you did so, or have a copy in each of the 10 pages that manipulates customer data. In my world, that has usually meant 5 identical functions and 5 that are all different (even though they are all supposed to be the same). ISD makes it tempting to order marinara, because the model lends itself to spaghetti code. Of course, you can completely prevent this, but you gotta learn the ISD model to determine the best way to do it on your project.
Page state and postbacks. Although ISD is quite open about this problem and tells users not to just take the defaults of returning the whole asp.net page state in the postback stream (cache on the server instead), the default is to return the whole page. Can make for some BIG pages. Which makes users think S L O W. As I said, you can manipulate this. But, what newbie is going to get this when it is SO tempting to just point, click, and boom - instant application. Your manager is now off your back because her product inventory table is "on the web" with a cool search and edit GUI (of 400kb state pages if you've gone a bit nuts and have just taken the default behaviors of ISD). Great in-house, but the customers in the real world....
Again, knowledge is the key. You can fix this, but you need to know you SHOULD.
Database read/write postbacks. No big problem here, but you also need to know that the model is to fetch only the data used at the moment. If your table shows 1000 records in 50 record increments, when you go from records 1 to 50 to 51 through 100, you will postback and hit the database again. This keeps data current, but increases server traffic.
Overall: Try the demo version. Point it at something simple that you really want to turn in to an asp.net application. Build maybe three tables. Then dissect it using the above as a guide. See what YOU think and post back to this question.
I have used it for convenience for a very small project. It did what I wanted and saved me a couple of days work.
The main problem I found was when it came to customising or extending the generated project. You have to spend quite a bit of time trying to understand Ironspeed's way of doing things which, I'll admit, is not my way.
I'd use it again for a small project if I knew in advance I wouldn't have to customise it much after.
If stored procedure generation is all you are after, CodeSmith is a decent option at a fraction of the cost of IronSpeed. There are several sproc templates available, and you can create your own or tweak an existing if that is what you need. You can also gen .Net code to your hearts content with CodeSmith. Tons of business class templates already exist for this.
IronSpeed's value is not in the sproc generation, but in the RAD features. I agree with #Galwegian... IronSpeed is OK for mock ups or very simple apps, not so good at all if you need to do any customization.
You may want to check out Evolutility CRUD framework. It provides some of the same features (limited to CRUD) and is open source.
IronSpeed has been great (out-of-the-box) at helping me develop data-driven corporate Intranet applications. While the code model takes a little getting used to, it is effective at maintaining a nice three-tier app. While the page templates can appear garish compared to 2010's web-design, it gets the job done, when you need function over form.
Iron Speed Designer is great for simple CRUD type web applications. You can find some useful information on our web site http://www.dotnetarchitect.co.uk/